19#ifndef COMMON_UTILS_INCLUDE_COMMONUTILS_SHMMANAGER_H_
20#define COMMON_UTILS_INCLUDE_COMMONUTILS_SHMMANAGER_H_
27#if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__ROOTCLING__) && !defined(__CLING__)
28#include <boost/interprocess/managed_external_buffer.hpp>
29#include <boost/interprocess/allocators/allocator.hpp>
32#if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__ROOTCLING__) && !defined(__CLING__) && !defined(__APPLE__)
93 return mBufferPtr && getPointerOffset(
ptr) < mPoolSize;
114 void* mBufferPtr =
nullptr;
115 void* mSegPtr =
nullptr;
117 bool mIsMaster =
false;
118 bool mIsOperational =
false;
120 std::mutex mAllocMutex;
122 void* tryAttach(
bool& success);
123 size_t getPointerOffset(
void*
ptr)
const {
return (
size_t)((
char*)
ptr - (
char*)mBufferPtr); }
125#if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__ROOTCLING__) && !defined(__CLING__)
126 boost::interprocess::wmanaged_external_buffer* boostmanagedbuffer;
127 boost::interprocess::allocator<char, boost::interprocess::wmanaged_external_buffer::segment_manager>* boostallocator;
static ShmManager & Instance()
void * getmemblock(size_t size)
bool isOperational() const
void printSegInfo() const
bool readyToAllocate() const
bool isPointerOk(void *ptr) const
void freememblock(void *, std::size_t=1)
bool attachToGlobalSegment()
bool createGlobalSegment(int nsubsegments=1)
void occupySegment(bool wholeRegion=false)
constexpr size_t SHMPOOLSIZE
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Common utility functions.