The Pedigree Project 0.1
Public Member Functions | Static Public Member Functions | Private Attributes | Static Private Attributes | List of all members
ProcessGroupManager Class Reference

#include <PosixSubsystem.h>

+ Collaboration diagram for ProcessGroupManager:

Public Member Functions

size_t allocateGroupId ()
 
void setGroupId (size_t gid)
 
bool isGroupIdValid (size_t gid) const
 
void returnGroupId (size_t gid)
 
void registerGroup (size_t gid, ProcessGroup *group)
 
void unregisterGroup (size_t gid, ProcessGroup *group)
 
ProcessGroup * findGroup (size_t gid) const
 
ProcessGroup * findGroup (size_t gid, const UserspacePidNamespace *space) const
 
Spinlock & lock ()
 

Static Public Member Functions

static ProcessGroupManager & instance ()
 

Private Attributes

ExtensibleBitmap m_GroupIds
 
ProcessGroup * m_Groups
 
Spinlock m_GroupLock
 

Static Private Attributes

static ProcessGroupManager m_Instance
 

Detailed Description

Process group ID control.

Definition at line 132 of file PosixSubsystem.h.

Constructor & Destructor Documentation

◆ ProcessGroupManager()

ProcessGroupManager::ProcessGroupManager ( )

Definition at line 182 of file PosixSubsystem.cc.

◆ ~ProcessGroupManager()

ProcessGroupManager::~ProcessGroupManager ( )
virtual

Definition at line 186 of file PosixSubsystem.cc.

Member Function Documentation

◆ allocateGroupId()

size_t ProcessGroupManager::allocateGroupId ( )

Allocates a new process group ID, that hasn't yet been used.

Definition at line 188 of file PosixSubsystem.cc.

◆ findGroup() [1/2]

ProcessGroup * ProcessGroupManager::findGroup ( size_t  gid) const

Caller must retain lock() while using the returned pointer.

Definition at line 237 of file PosixSubsystem.cc.

◆ findGroup() [2/2]

ProcessGroup * ProcessGroupManager::findGroup ( size_t  gid,
const UserspacePidNamespace *  space 
) const

Definition at line 244 of file PosixSubsystem.cc.

◆ instance()

static ProcessGroupManager & ProcessGroupManager::instance ( )
inlinestatic

Definition at line 137 of file PosixSubsystem.h.

◆ isGroupIdValid()

bool ProcessGroupManager::isGroupIdValid ( size_t  gid) const

Checks whether the given process group ID is used or not.

Definition at line 207 of file PosixSubsystem.cc.

◆ lock()

Spinlock & ProcessGroupManager::lock ( )
inline

Serialises process-group pointers, membership lists, and destruction.

Definition at line 162 of file PosixSubsystem.h.

◆ registerGroup()

void ProcessGroupManager::registerGroup ( size_t  gid,
ProcessGroup *  group 
)

Installs/removes the concrete group behind a reserved ID.

Definition at line 217 of file PosixSubsystem.cc.

◆ returnGroupId()

void ProcessGroupManager::returnGroupId ( size_t  gid)

Returns the given process group ID to the available pool.

Definition at line 212 of file PosixSubsystem.cc.

◆ setGroupId()

void ProcessGroupManager::setGroupId ( size_t  gid)

Forcibly set the given group ID as taken.

Definition at line 197 of file PosixSubsystem.cc.

◆ unregisterGroup()

void ProcessGroupManager::unregisterGroup ( size_t  gid,
ProcessGroup *  group 
)

Definition at line 225 of file PosixSubsystem.cc.

Member Data Documentation

◆ m_GroupIds

ExtensibleBitmap ProcessGroupManager::m_GroupIds
private

Bitmap of available group IDs.

Definition at line 171 of file PosixSubsystem.h.

◆ m_GroupLock

Spinlock ProcessGroupManager::m_GroupLock
mutableprivate

Definition at line 174 of file PosixSubsystem.h.

◆ m_Groups

ProcessGroup* ProcessGroupManager::m_Groups
private

Definition at line 172 of file PosixSubsystem.h.

◆ m_Instance

ProcessGroupManager ProcessGroupManager::m_Instance
staticprivate

Definition at line 167 of file PosixSubsystem.h.


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