251
51 struct record_t {
52
char name[63];
53
char valid;
54 };
55 struct root {
56
pobj::persistent_ptr header;
57
pobj::persistent_ptr records;
58 };
59
60 pobj::pool pop;
61
62 int main(int argc, char *argv[]) {
63
64
// everything between BEGIN and END can be
65
// assigned a particular engine in pmreorder
66
VALGRIND_PMC_EMIT_LOG("PMREORDER_TAG.BEGIN");
67
68
pop = pobj::pool::open("/mnt/pmem/file",
69
"RECORDS");
70
auto proot = pop.root();
71
72
// allocation of memory and initialization to zero
73
pobj::transaction::run(pop, [&] {
74
proot->header
75
= pobj::make_persistent();
76
proot->header->counter = 0;
77
proot->records
78
= pobj::make_persistent(10);
79
proot->records[0].valid = 0;
80
});
81
82
pobj::persistent_ptr header
83
= proot->header;
84
pobj::persistent_ptr records
85
= proot->records;
86
Chapter 12 Debugging persistent MeMory appliCations
Précédent

- 275/457

Suivant