#include <fcntl.h>
#include <libpmemobj++/p.hpp>
#include <libpmemobj++/persistent_ptr.hpp>
#include <libpmemobj++/pool.hpp>
using namespace pmem::obj;
void
pool_example()
{
struct root {
p<int> some_array[42];
p<int> some_other_array[42];
p<double> some_variable;
};
auto pop = pool<root>::create("poolfile", "layout", PMEMOBJ_MIN_POOL);
pop.close();
pop = pool<root>::open("poolfile", "layout");
auto root_obj = pop.get_root();
root_obj->some_variable = 3.2;
pop.persist(root_obj->some_variable);
pop.memset_persist(root_obj->some_array, 2,
sizeof(root_obj->some_array));
pop.memcpy_persist(root_obj->some_other_array, root_obj->some_array,
sizeof(root_obj->some_array));
pop.close();
pool<root>::check("poolfile", "layout");
}
#include <fcntl.h>
#include <libpmemobj++/make_persistent_atomic.hpp>
#include <libpmemobj++/p.hpp>
#include <libpmemobj++/pool.hpp>
using namespace pmem::obj;
void
pool_base_example()
{
struct some_struct {
p<int> some_array[42];
p<int> some_other_array[42];
p<int> some_variable;
};
auto pop = pool_base::create("poolfile", "", PMEMOBJ_MIN_POOL);
pop.close();
pop = pool_base::open("poolfile", "");
persistent_ptr<some_struct> pval;
make_persistent_atomic<some_struct>(pop, pval);
pval->some_variable = 3;
pop.persist(pval->some_variable);
pop.memset_persist(pval->some_array, 2, sizeof(pval->some_array));
pop.memcpy_persist(pval->some_other_array, pval->some_array,
sizeof(pval->some_array));
pop.close();
pool_base::check("poolfile", "");
}