/* * pocli_pmemobj_memset_persist -- pmemobj_memset_persist() command */ static enum pocli_ret pocli_pmemobj_memset_persist(struct pocli_ctx *ctx, struct pocli_args *args) { if (args->argc != 5) return POCLI_ERR_ARGS; PMEMoid *oid; enum pocli_ret ret; uint64_t offset; uint64_t len; uint64_t c; if ((ret = pocli_args_obj(ctx, args, 1, &oid))) return ret; if ((ret = pocli_args_number(args, 2, &offset))) return ret; char *dest_p = pmemobj_direct(*oid); dest_p += offset; if ((ret = pocli_args_number(args, 3, &c))) return ret; if ((ret = pocli_args_number(args, 4, &len))) return ret; void *result = pmemobj_memset_persist(ctx->pop, dest_p, (int)c, len); pocli_printf(ctx, "%s(%p, %u, %d): ptr = %p\n", args->argv[0], dest_p, c, len, result); return ret; }
static int test_constructor(PMEMobjpool *pop, void *addr, void *args) { struct cargs *a = args; /* do not use pmem_memset_persit() here */ pmemobj_memset_persist(pop, addr, a->size % 256, a->size); return 0; }
/** * Performs memset and persist operation on a given chunk of * memory. * * @param[in] dest destination memory address * @param[in] c constant value to fill the memory * @param[in] len size of memory chunk * * @return A pointer to dest */ void * memset_persist(void *dest, int c, size_t len) noexcept { return pmemobj_memset_persist(this->pop, dest, c, len); }
static void test_constructor(PMEMobjpool *pop, void *addr, void *args) { struct cargs *a = args; pmemobj_memset_persist(pop, addr, rand() % 256, a->size / 2); }