CoreLinux++
0.4.32
|
The SemaphoreCommon manages the SemaphoreGroup common storage area. More...
#include <SemaphoreCommon.hpp>
Static Public Member Functions | |
static Int | getSemaphoreMaxValue (SemaphoreGroupPtr, Int) |
Returns the maximum value for a semaphore as defined by the original semaphore claimant. More... | |
static void | groupDefined (SemaphoreGroupPtr) |
When a shared semaphore group is created, it is updated in the CSA, either by increasing the count of processes accessing a particular group, or adding to the csa initially. More... | |
static Int | groupUnDefined (SemaphoreGroupPtr) |
When the local process is deleting a semaphore group and it is considered a shared group, we are asked to adjust the map accordingly. More... | |
static Int | setLock (SemaphoreGroupPtr, Int, Int, Int) |
Called by the base semaphore to aquire a lock for a specific semaphore. More... | |
static Int | setUnLock (SemaphoreGroupPtr, Int, Int, Int) |
Called by the base semaphore to relinquish a lock for a specific semaphore. More... | |
static Int | waitZero (SemaphoreGroupPtr, Int, Int, Int) |
Called by the base semaphore to wait for a specific semaphore to have a zero value. More... | |
static Int | obtainSemaphore (SemaphoreGroupPtr, Int, IntRef, IntRef, IntRef, Int) |
Typically called by a SemaphoreGroup prior to passing out the semaphore type to the caller. More... | |
static Int | relinquishSemaphore (SemaphoreGroupPtr, Int) |
Called when the semaphore is no longer being referenced. More... | |
static Int | setMaxValue (SemaphoreGroupPtr, Int, Int) |
Called to set the semaphore maximum value. More... | |
Protected Member Functions | |
SemaphoreCommon (void) | |
Default constructor used by class. | |
virtual | ~SemaphoreCommon (void) |
Destructor. | |
void | registerGroup (SemaphoreGroupPtr) |
Does the work of getting the group registered in the CSA. More... | |
Int | deregisterGroup (SemaphoreGroupPtr) |
Does the work of reducing the group share count, or marking the group for reclaimation. More... | |
Int | claimSemaphore (SemaphoreGroupPtr, Int, IntRef, IntRef, IntRef, Int) |
Called when the group is determined to be shared and a semaphore share is to be claimed. More... | |
Int | reclaimSemaphore (SemaphoreGroupPtr, Int) |
Called when a group wishes to let the CSA reclaim a semaphore share. More... | |
CSAGrpHeaderPtr | findGroup (IntCref, IntCref, CSAGrpHeaderPtr) |
Attempt to locate a specific group. | |
CSAGrpHeaderPtr | findAvailableGroup (IntCref, IntCref, CSAGrpHeaderPtr) |
Find open slot that fits count criteria. | |
CSAGrpHeaderPtr | subsetGroup (Int, CSAGrpHeaderPtr) |
Utility to clean CSA group tail. | |
CSAGrpHeaderPtr | combineGroup (Int, CSAGrpHeaderPtr) |
bool | isOriginator (void) const |
Int | getOriginatorId (void) const |
Int | canonicalUndefined (void) |
![]() | |
Guard | access (void) const throw (SemaphoreException) |
Access returns a instance of Guard which is block scoped to the caller. More... | |
Static Protected Member Functions | |
static void | createAttachment (void) |
Factory for CSA. | |
static void | exitAttachment (void) |
On the way out from run-time. | |
Friends | |
class | CoreLinuxGuardPool |
Additional Inherited Members | |
![]() | |
Synchronized (void) | |
Default constructor. | |
Synchronized (SynchronizedCref) | |
Copy constructor. | |
virtual | ~Synchronized (void) |
Virtual Destructor. | |
SynchronizedRef | operator= (SynchronizedCref) |
Assignment operator. | |
bool | operator== (SynchronizedCref) const |
Equality operator. | |
![]() | |
typedef Guard * | GuardPtr |
typedef const Guard * | GuardCptr |
typedef Guard & | GuardRef |
typedef const Guard & | GuardCref |
The SemaphoreCommon manages the SemaphoreGroup common storage area.
This area is to communicate between address spaces when using one of the CoreLinux++ SemaphoreGroup types in public mode.
|
protected |
Called when the group is determined to be shared and a semaphore share is to be claimed.
SemaphoreGroup | the group pointer |
Int | the semaphore identifier/index -1 = any |
Int | the initial value (becomes the max if new) |
IntRef | the recursive condition |
IntRef | the balking condition |
Int | 0 must not exist, 1 share, 2 must exist |
References reclaimSemaphore().
Referenced by deregisterGroup(), and obtainSemaphore().
|
protected |
Does the work of reducing the group share count, or marking the group for reclaimation.
SemaphoreGroup | pointer to register |
References claimSemaphore().
Referenced by groupUnDefined().
|
static |
Returns the maximum value for a semaphore as defined by the original semaphore claimant.
SemaphoreGroup | pointer to group owner |
Int | zero offset semaphore identifier |
References corelinux::SemaphoreGroup::isPrivate().
Referenced by setMaxValue().
|
static |
When a shared semaphore group is created, it is updated in the CSA, either by increasing the count of processes accessing a particular group, or adding to the csa initially.
SemaphoreGroup | pointer |
References createAttachment(), and registerGroup().
Referenced by corelinux::SemaphoreGroup::SemaphoreGroup().
|
static |
When the local process is deleting a semaphore group and it is considered a shared group, we are asked to adjust the map accordingly.
SemaphoreGroup | pointer to the group |
References deregisterGroup(), and setLock().
Referenced by corelinux::SemaphoreGroup::~SemaphoreGroup().
|
static |
Typically called by a SemaphoreGroup prior to passing out the semaphore type to the caller.
SemaphoreGroup | the group pointer |
Int | the semaphore identifier/index -1 = any |
Int | reference the initial value (becomes the max if new) |
Int | reference the recursive condition |
Int | reference the balking condition |
Int | 0 must not exist, 1 share, 2 must exist |
References claimSemaphore(), corelinux::SemaphoreGroup::isPrivate(), and relinquishSemaphore().
Referenced by corelinux::EventSemaphoreGroup::destroySemaphore(), corelinux::MutexSemaphoreGroup::resolveSemaphore(), corelinux::GatewaySemaphoreGroup::resolveSemaphore(), and waitZero().
|
protected |
Called when a group wishes to let the CSA reclaim a semaphore share.
SemaphoreGroup | the group pointer |
Int | the semaphore identifier/index |
References findGroup().
Referenced by claimSemaphore(), and relinquishSemaphore().
|
protected |
Does the work of getting the group registered in the CSA.
SemaphoreGroup | pointer to register |
References findAvailableGroup(), findGroup(), corelinux::SemaphoreGroup::getIdentifier(), and subsetGroup().
Referenced by groupDefined().
|
static |
Called when the semaphore is no longer being referenced.
Effectively reducing the share count for shared group semaphores
SemaphoreGroup | pointer |
Int | the zero index semaphore identifier |
References corelinux::SemaphoreGroup::isPrivate(), reclaimSemaphore(), and setMaxValue().
Referenced by corelinux::GatewaySemaphoreGroup::destroySemaphore(), corelinux::MutexSemaphoreGroup::destroySemaphore(), corelinux::EventSemaphoreGroup::destroySemaphore(), obtainSemaphore(), corelinux::EventSemaphoreGroup::~EventSemaphoreGroup(), corelinux::GatewaySemaphoreGroup::~GatewaySemaphoreGroup(), and corelinux::MutexSemaphoreGroup::~MutexSemaphoreGroup().
|
static |
Called by the base semaphore to aquire a lock for a specific semaphore.
SemaphoreGroup | pointer to the group |
Int | the system group id |
Int | the zero offset semaphore id |
Int | the system dependent flag |
References corelinux::Thread::getThreadIdentifier(), corelinux::SemaphoreGroup::isPrivate(), and setUnLock().
Referenced by groupUnDefined().
|
static |
Called to set the semaphore maximum value.
For local this is SETVAL, for shared it is ignored
SemaphoreGroup | pointer |
Int | the zero index semaphore identifier |
Int | the value |
References getSemaphoreMaxValue(), and corelinux::SemaphoreGroup::isPrivate().
Referenced by relinquishSemaphore().
|
static |
Called by the base semaphore to relinquish a lock for a specific semaphore.
SemaphoreGroup | pointer to the group |
Int | the system group id |
Int | the zero offset semaphore id |
Int | the system dependent flag |
References corelinux::SemaphoreGroup::isPrivate(), and waitZero().
Referenced by setLock().
|
static |
Called by the base semaphore to wait for a specific semaphore to have a zero value.
SemaphoreGroup | pointer to the group |
Int | the system group id |
Int | the zero offset semaphore id |
Int | the system dependent flag |
References corelinux::SemaphoreGroup::isPrivate(), and obtainSemaphore().
Referenced by setUnLock().