40 #ifndef PMEMOBJ_MAKE_PERSISTENT_ATOMIC_HPP 41 #define PMEMOBJ_MAKE_PERSISTENT_ATOMIC_HPP 48 #include "libpmemobj/atomic_base.h" 73 template <
typename T,
typename... Args>
79 auto arg_pack = std::make_tuple(args...);
80 auto ret = pmemobj_alloc(pool.get_handle(), ptr.
raw_ptr(),
sizeof(T),
81 detail::type_num<T>(),
82 &detail::obj_constructor<T, Args...>,
83 static_cast<void *
>(&arg_pack));
86 throw std::bad_alloc();
108 pmemobj_free(ptr.raw_ptr());
Persistent pointer class.
Definition: persistent_ptr.hpp:72
PMEMoid * raw_ptr() noexcept
Get pointer to PMEMoid encapsulated by this object.
Definition: persistent_ptr.hpp:289
The non-template pool base class.
Definition: pool.hpp:64
Commonly used functionality.
Compile time type check for make_persistent.
Implementation details of atomic allocation and construction.
PMEMobj pool class.
Definition: persistent_ptr.hpp:55
void make_persistent_atomic(pool_base &pool, typename detail::pp_if_array< T >::type &ptr, std::size_t N)
Atomically allocate an array of objects.
Definition: make_persistent_array_atomic.hpp:72
void delete_persistent_atomic(typename detail::pp_if_array< T >::type &ptr, std::size_t N)
Atomically deallocate an array of objects.
Definition: make_persistent_array_atomic.hpp:129
Definition: condition_variable.hpp:48