58 for (
int i = 0; i <= PageId::maxPurpose; ++i)
66 Must(0 <= purpose && purpose <= PageId::maxPurpose);
74 Must(0 <= purpose && purpose <= PageId::maxPurpose);
static const char * PagePoolId
static Ipc::Mem::PagePool * ThePagePool
static int TheLimits[Ipc::Mem::PageId::maxPurpose+1]
#define DefineRunnerRegistrator(ClassName)
Shared memory page identifier, address, or handler.
char * pagePointer(const PageId &page)
converts page handler into a temporary writeable shared memory pointer
static Owner * Init(const char *const shmId, const Ipc::Mem::PoolId stackId, const unsigned int capacity, const size_t pageSize)
size_t level() const
approximate number of shared memory pages used now
void put(PageId &page)
makes identified page available as a free page to future get() callers
bool get(const PageId::Purpose purpose, PageId &page)
sets page ID and returns true unless no free pages are found
static PoolId IdForMultipurposePool()
multipurpose PagePool of shared memory pages
void useConfig() override
initializes shared memory pages
Ipc::Mem::PagePool::Owner * owner
void create() override
called when the runner should create a new memory segment
~SharedMemPagesRr() override
void useConfig() override
size_t PageLevel()
approximate total number of shared memory pages used now
bool GetPage(const PageId::Purpose purpose, PageId &page)
sets page ID and returns true unless no free pages are found
size_t PagesAvailable()
approximate total number of shared memory pages we can allocate now
size_t PageSize()
returns page size in bytes; all pages are assumed to be the same size
void NotePageNeed(const int purpose, const int count)
claim the need for a number of pages for a given purpose
void PutPage(PageId &page)
makes identified page available as a free page to future GetPage() callers
char * PagePointer(const PageId &page)
converts page handler into a temporary writeable shared memory pointer
size_t PageLimit()
the total number of shared memory pages that can be in use at any time