Realm
A distributed, event-based tasking library
Loading...
Searching...
No Matches
Realm::BackgroundWorkManager Class Reference

#include <bgwork.h>

Collaboration diagram for Realm::BackgroundWorkManager:

Classes

struct  Config
 
class  Worker
 

Public Types

typedef unsigned long long BitMask
 

Public Member Functions

 BackgroundWorkManager (void)
 
 ~BackgroundWorkManager (void)
 
void configure_from_cmdline (std::vector< std::string > &cmdline)
 
void start_dedicated_workers (Realm::CoreReservationSet &crs)
 
void stop_dedicated_workers (void)
 

Static Public Attributes

static const size_t MAX_WORK_ITEMS = 256
 
static const size_t BITMASK_BITS = 8 * sizeof(BitMask)
 
static const size_t BITMASK_ARRAY_SIZE
 

Protected Member Functions

unsigned assign_slot (BackgroundWorkItem *item)
 
void release_slot (unsigned slot)
 
void advertise_work (unsigned slot)
 

Protected Attributes

Config cfg
 
Mutex mutex
 
atomic< unsigned > num_work_items
 
atomic< BitMaskactive_work_item_mask [BITMASK_ARRAY_SIZE]
 
atomic< int > work_item_usecounts [MAX_WORK_ITEMS]
 
BackgroundWorkItemwork_items [MAX_WORK_ITEMS]
 
atomic< uint32_t > worker_state
 
DelegatingMutex db_mutex
 
DoorbellList db_list
 
std::vector< BackgroundWorkThread * > dedicated_workers
 

Static Protected Attributes

static const uint32_t STATE_SHUTDOWN_BIT = 1
 
static const uint32_t STATE_ACTIVE_ITEMS_MASK = 0xFFFF
 
static const unsigned STATE_ACTIVE_ITEMS_SHIFT = 16
 
static const uint32_t STATE_SLEEPING_WORKERS_MASK = 0xFFF
 
static const unsigned STATE_SLEEPING_WORKERS_SHIFT = 4
 

Friends

class BackgroundWorkManager::Worker
 
class BackgroundWorkItem
 
class BackgroundWorkThread
 

Member Typedef Documentation

◆ BitMask

typedef unsigned long long Realm::BackgroundWorkManager::BitMask

Constructor & Destructor Documentation

◆ BackgroundWorkManager()

Realm::BackgroundWorkManager::BackgroundWorkManager ( void  )

◆ ~BackgroundWorkManager()

Realm::BackgroundWorkManager::~BackgroundWorkManager ( void  )

Member Function Documentation

◆ advertise_work()

void Realm::BackgroundWorkManager::advertise_work ( unsigned  slot)
protected

◆ assign_slot()

unsigned Realm::BackgroundWorkManager::assign_slot ( BackgroundWorkItem item)
protected

◆ configure_from_cmdline()

void Realm::BackgroundWorkManager::configure_from_cmdline ( std::vector< std::string > &  cmdline)

◆ release_slot()

void Realm::BackgroundWorkManager::release_slot ( unsigned  slot)
protected

◆ start_dedicated_workers()

void Realm::BackgroundWorkManager::start_dedicated_workers ( Realm::CoreReservationSet crs)

◆ stop_dedicated_workers()

void Realm::BackgroundWorkManager::stop_dedicated_workers ( void  )

Friends And Related Symbol Documentation

◆ BackgroundWorkItem

friend class BackgroundWorkItem
friend

◆ BackgroundWorkManager::Worker

friend class BackgroundWorkManager::Worker
friend

◆ BackgroundWorkThread

friend class BackgroundWorkThread
friend

Member Data Documentation

◆ active_work_item_mask

atomic<BitMask> Realm::BackgroundWorkManager::active_work_item_mask[BITMASK_ARRAY_SIZE]
protected

◆ BITMASK_ARRAY_SIZE

const size_t Realm::BackgroundWorkManager::BITMASK_ARRAY_SIZE
static
Initial value:
=
static const size_t BITMASK_BITS
Definition bgwork.h:59
static const size_t MAX_WORK_ITEMS
Definition bgwork.h:58

◆ BITMASK_BITS

const size_t Realm::BackgroundWorkManager::BITMASK_BITS = 8 * sizeof(BitMask)
static

◆ cfg

Config Realm::BackgroundWorkManager::cfg
protected

◆ db_list

DoorbellList Realm::BackgroundWorkManager::db_list
protected

◆ db_mutex

DelegatingMutex Realm::BackgroundWorkManager::db_mutex
protected

◆ dedicated_workers

std::vector<BackgroundWorkThread *> Realm::BackgroundWorkManager::dedicated_workers
protected

◆ MAX_WORK_ITEMS

const size_t Realm::BackgroundWorkManager::MAX_WORK_ITEMS = 256
static

◆ mutex

Mutex Realm::BackgroundWorkManager::mutex
protected

◆ num_work_items

atomic<unsigned> Realm::BackgroundWorkManager::num_work_items
protected

◆ STATE_ACTIVE_ITEMS_MASK

const uint32_t Realm::BackgroundWorkManager::STATE_ACTIVE_ITEMS_MASK = 0xFFFF
staticprotected

◆ STATE_ACTIVE_ITEMS_SHIFT

const unsigned Realm::BackgroundWorkManager::STATE_ACTIVE_ITEMS_SHIFT = 16
staticprotected

◆ STATE_SHUTDOWN_BIT

const uint32_t Realm::BackgroundWorkManager::STATE_SHUTDOWN_BIT = 1
staticprotected

◆ STATE_SLEEPING_WORKERS_MASK

const uint32_t Realm::BackgroundWorkManager::STATE_SLEEPING_WORKERS_MASK = 0xFFF
staticprotected

◆ STATE_SLEEPING_WORKERS_SHIFT

const unsigned Realm::BackgroundWorkManager::STATE_SLEEPING_WORKERS_SHIFT = 4
staticprotected

◆ work_item_usecounts

atomic<int> Realm::BackgroundWorkManager::work_item_usecounts[MAX_WORK_ITEMS]
protected

◆ work_items

BackgroundWorkItem* Realm::BackgroundWorkManager::work_items[MAX_WORK_ITEMS]
protected

◆ worker_state

atomic<uint32_t> Realm::BackgroundWorkManager::worker_state
protected

The documentation for this class was generated from the following file: