1 #include "hmbdc/Copyright.hpp" 4 #include <boost/align/align.hpp> 5 #include <boost/interprocess/sync/file_lock.hpp> 15 namespace hmbdc {
namespace os {
42 template <
typename T,
typename ...Args>
43 T* allocate(
size_t alignment, Args&&... args) {
44 auto cur = boost::alignment::align(alignment,
sizeof(T), cur_, size_);
47 cur_ = ((
char*)cur) +
sizeof(T);
48 res = ::new (cur)T(std::forward<Args>(args)...);
50 res =
static_cast<T*
>(cur);
55 void * memalign(
size_t alignment,
size_t size) {
56 auto res = boost::alignment::align(alignment, size, cur_, size_);
57 cur_ = ((
char*)cur_) + size_;
61 template <
typename T>
void unallocate(T* ptr){
69 void set(
void* base,
size_t size,
bool runCtor =
true) {
89 ,
int oflags = O_RDWR | O_CREAT | O_EXCL);
92 template <
typename T,
typename ...Args>
93 T* allocate(
size_t alignment, Args&&... args) {
94 std::lock_guard<decltype(lock_)> g(lock_);
95 return BasePtrAllocator::allocate<T>(alignment
96 , std::forward<Args>(args)...);
108 boost::interprocess::file_lock lock_;
118 template <
typename ...NoUses>
121 template <
typename T,
typename ...Args>
122 T* allocate(
size_t alignment, Args&&... args) {
123 return new T(std::forward<Args>(args)...);
126 void* memalign(
size_t alignment,
size_t size) {
127 return ::memalign(alignment, size);
130 template <
typename T>
135 void free(
void* ptr){
the default vanilla allocate
Definition: Allocators.hpp:114
helping allocating object and its aggregated objects in a continouse memory
Definition: Allocators.hpp:22
helping allocating object and its aggregated objects in a continouse shared memory ...
Definition: Allocators.hpp:86
Definition: Client.hpp:11