/* * pocli_pmemobj_next -- pmemobj_next() command */ static enum pocli_ret pocli_pmemobj_next(struct pocli_ctx *ctx, struct pocli_args *args) { if (args->argc != 2) return POCLI_ERR_ARGS; PMEMoid *oidp; PMEMoid oidp_next; enum pocli_ret ret; ret = pocli_args_obj(ctx, args, 1, &oidp); if (ret) return ret; oidp_next = pmemobj_next(*oidp); pocli_printf(ctx, "%s(%p): off = 0x%llx uuid = 0x%llx\n", args->argv[0], pmemobj_direct(*oidp), oidp_next.off, oidp_next.pool_uuid_lo); return ret; }
/* * pmemobj_vg_boot -- (internal) notify Valgrind about pool objects */ static void pmemobj_vg_boot(struct pmemobjpool *pop) { if (!On_valgrind) return; LOG(4, "pop %p", pop); PMEMoid oid; int rs = pmemobj_root_size(pop); if (rs) { oid = pmemobj_root(pop, rs); pmemobj_vg_register_object(pop, oid, 1); } for (int i = 0; i < PMEMOBJ_NUM_OID_TYPES; ++i) { for (oid = pmemobj_first(pop, i); !OID_IS_NULL(oid); oid = pmemobj_next(oid)) pmemobj_vg_register_object(pop, oid, 0); } if (getenv("PMEMOBJ_VG_CHECK_UNDEF")) pmemobj_vg_check_no_undef(pop); }