int main(int argc, char *argv[]) { START(argc, argv, "pmem_is_pmem_posix"); if (argc < 4) UT_FATAL("usage: %s op addr len type [op addr len type ...]", argv[0]); /* insert memory regions to the list */ int i; for (i = 1; i < argc; ) { UT_ASSERT(i + 2 < argc); errno = 0; void *addr = (void *)strtoull(argv[i + 1], NULL, 0); UT_ASSERTeq(errno, 0); size_t len = strtoull(argv[i + 2], NULL, 0); UT_ASSERTeq(errno, 0); int ret; switch (argv[i][0]) { case 'a': ret = util_range_register(addr, len, "", str2type(argv[i + 3])); if (ret != 0) UT_OUT("%s", pmem_errormsg()); i += 4; break; case 'r': ret = util_range_unregister(addr, len); UT_ASSERTeq(ret, 0); i += 3; break; case 't': UT_OUT("addr %p len %zu is_pmem %d", addr, len, pmem_is_pmem(addr, len)); i += 3; break; case 'f': do_fault_injection_register(addr, len, str2type(argv[i + 3])); i += 4; break; case 's': do_fault_injection_split(addr, len); i += 3; break; default: FATAL("invalid op '%c'", argv[i][0]); } } DONE(NULL); }
/* * pmem_unmap -- unmap the specified region */ int pmem_unmap(void *addr, size_t len) { LOG(3, "addr %p len %zu", addr, len); #ifndef _WIN32 util_range_unregister(addr, len); #endif VALGRIND_REMOVE_PMEM_MAPPING(addr, len); return util_unmap(addr, len); }
static void do_fault_injection_split(void *addr, size_t len) { if (!pmem_fault_injection_enabled()) return; pmem_inject_fault_at(PMEM_MALLOC, 1, "util_range_split"); int ret = util_range_unregister(addr, len); UT_ASSERTne(ret, 0); UT_ASSERTeq(errno, ENOMEM); }
int main(int argc, char *argv[]) { START(argc, argv, "pmem_is_pmem_linux"); if (argc < 3) UT_FATAL("usage: %s op addr len [op addr len ...]", argv[0]); /* insert memory regions to the list */ int i; for (i = 1; i < argc; i += 3) { UT_ASSERT(i + 2 < argc); errno = 0; void *addr = (void *)strtoull(argv[i + 1], NULL, 0); UT_ASSERTeq(errno, 0); size_t len = strtoull(argv[i + 2], NULL, 0); UT_ASSERTeq(errno, 0); int ret; switch (argv[i][0]) { case 'a': ret = util_range_register(addr, len); UT_ASSERTeq(ret, 0); break; case 'r': ret = util_range_unregister(addr, len); UT_ASSERTeq(ret, 0); break; case 't': UT_OUT("addr %p len %zu is_pmem %d", addr, len, pmem_is_pmem(addr, len)); break; default: FATAL("invalid op"); } } DONE(NULL); }