96
53
pmemobj_persist(pop, ptr, sizeof(color));
54
return 0;
55 }
56
57 int main()
58 {
59
PMEMobjpool *pool = pmemobj_open(POOL, LAYOUT);
60
if (!pool) {
61
pool = pmemobj_create(POOL, LAYOUT,
62
PMEMOBJ_MIN_POOL, 0666);
63
if (!pool)
64
die("Couldn't open pool: %m\n");
65
66
}
67
PMEMoid root = pmemobj_root(pool,
68
sizeof(PMEMoid) * 6);
69
if (OID_IS_NULL(root))
70
die("Couldn't access root object.\n");
71
72
PMEMoid *chamber = (PMEMoid *)pmemobj_direct(root)
73
+ (getpid() % 6);
74
if (OID_IS_NULL(*chamber)) {
75
printf("Reloading.\n");
76
if (pmemobj_alloc(pool, chamber, sizeof(color)
77
, 0, paintball_init, 0))
78
die("Failed to alloc: %m\n");
79
} else {
80
printf("Shooting %06x colored bullet.\n",
81
*(color *)pmemobj_direct(*chamber));
82
pmemobj_free(chamber);
83
}
84
85
pmemobj_close(pool);
86
return 0;
87 }
Chapter 7 libpmemobj: a Native traNsaCtioNal objeCt store
Précédent

- 123/457

Suivant