Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <libpmemobj++/experimental/array.hpp>
- #include <libpmemobj++/experimental/slice.hpp>
- #include <libpmemobj++/make_persistent.hpp>
- #include <libpmemobj++/pool.hpp>
- #include <libpmemobj++/transaction.hpp>
- #define MAX_ROW_ALLOC 1000U
- #define MAX_ROWS 100U
- using arr_type_in = pmem::obj::experimental::array<char, MAX_ROW_ALLOC>;
- using pptr_arr_type_in = pmem::obj::persistent_ptr<arr_type_in>;
- using arr_type_out = pmem::obj::experimental::array<pptr_arr_type_in, MAX_ROWS>;
- using pptr_arr_type_out = pmem::obj::persistent_ptr<arr_type_out>;
- struct root {
- pptr_arr_type_out p;
- };
- int
- main(int argc, char *argv[])
- {
- START();
- if (argc < 2) {
- std::cerr << "usage: " << argv[0] << " file-name " << std::endl;
- return 1;
- }
- auto path = argv[1];
- auto pop = pmem::obj::pool<root>::create(
- path, "ArrayTest", PMEMOBJ_MIN_POOL, S_IWUSR | S_IRUSR);
- auto r = pop.root();
- pmem::obj::transaction::run(pop, [&] {
- r->p = pmem::obj::make_persistent<arr_type_out>();
- arr_type_out &arr_out = *(r->p);
- for (unsigned i = 0; i < MAX_ROWS; ++i)
- arr_out[i] = pmem::obj::make_persistent<arr_type_in>();
- });
- pop.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement