CoreLinux++  0.4.32
Public Member Functions | Protected Member Functions | List of all members
corelinux::MutexSemaphoreGroup Class Reference

A MutexSemaphoreGroup is an extension to the SemaphoreGroup for creating only MutexSemaphore types. More...

#include <MutexSemaphoreGroup.hpp>

Public Member Functions

 MutexSemaphoreGroup (Short, Int Rights=OWNER_ALL) throw (Assertion,SemaphoreException)
 Default constructor creates a private group semaphores with access for OWNER_ALL. More...
 
 MutexSemaphoreGroup (Short, SemaphoreGroupIdentifierCref, Int, CreateDisposition disp=FAIL_IF_EXISTS) throw (Assertion,SemaphoreException)
 Constructor to open or create a semaphore group with a specific identifier. More...
 
 MutexSemaphoreGroup (Short, CharCptr, Int, CreateDisposition disp=FAIL_IF_EXISTS) throw (Assertion,SemaphoreException)
 Constructor to open or create a semaphore group by name. More...
 
virtual ~MutexSemaphoreGroup (void)
 Virtual destructor.
 
virtual AbstractSemaphorePtr createSemaphore (void) throw ( SemaphoreException )
 Create a default MutexSemaphore. More...
 
virtual AbstractSemaphorePtr createLockedSemaphore (bool Recursive=false, bool Balking=false) throw ( SemaphoreException )
 Create a locked MutexSemaphore. More...
 
virtual AbstractSemaphorePtr createSemaphore (SemaphoreIdentifierRef aIdentifier, CreateDisposition disp=CREATE_OR_REUSE, bool Recursive=false, bool Balking=false) throw ( SemaphoreException )
 Create or open (use) a specific MutexSemphore. More...
 
virtual AbstractSemaphorePtr createLockedSemaphore (SemaphoreIdentifierRef aIdentifier, CreateDisposition disp=CREATE_OR_REUSE, bool Recursive=false, bool Balking=false) throw ( SemaphoreException )
 Create or open (use) a specific MutexSemphore and have it automatically locked. More...
 
virtual AbstractSemaphorePtr createSemaphore (std::string aName, CreateDisposition disp=CREATE_OR_REUSE, bool Recursive=false, bool Balking=false) throw ( SemaphoreException )
 Create or open (use) a specific MutexSemphore. More...
 
virtual void destroySemaphore (AbstractSemaphorePtr) throw ( SemaphoreException )
 Destroys a created MutexSemaphore. More...
 
- Public Member Functions inherited from corelinux::SemaphoreGroup
 SemaphoreGroup (Short, Int Rights=OWNER_ALL) throw (Assertion,SemaphoreException)
 Default constructor creates a private group semaphores. More...
 
 SemaphoreGroup (Short, SemaphoreGroupIdentifierCref, Int, CreateDisposition disp=FAIL_IF_EXISTS) throw (Assertion,SemaphoreException)
 Constructor to open or create a semaphore group with a specific identifier. More...
 
 SemaphoreGroup (Short, CharCptr, Int, CreateDisposition disp=FAIL_IF_EXISTS) throw (Assertion,SemaphoreException)
 Constructor to open or create a semaphore group by name. More...
 
virtual ~SemaphoreGroup (void)
 Virtual destructor.
 
bool operator== (SemaphoreGroupCref) const
 Equality operator compares the identifier. More...
 
Short getSemaphoreCount (void) const
 Return the number of semaphores in the group. More...
 
SemaphoreGroupIdentifierCref getIdentifier (void) const
 Return the SemaphoreGroupIdentifier. More...
 
- Public Member Functions inherited from corelinux::Synchronized
 Synchronized (void)
 Default constructor.
 
 Synchronized (SynchronizedCref)
 Copy constructor.
 
virtual ~Synchronized (void)
 Virtual Destructor.
 
SynchronizedRef operator= (SynchronizedCref)
 Assignment operator.
 
bool operator== (SynchronizedCref) const
 Equality operator.
 

Protected Member Functions

 MutexSemaphoreGroup (void) throw ( Assertion )
 Default constructor not allowed.
 
 MutexSemaphoreGroup (MutexSemaphoreGroupCref) throw ( Assertion )
 Copy constructor not allowed.
 
MutexSemaphoreGroupRef operator= (MutexSemaphoreGroupCref) throw ( Assertion )
 Assignment operator not allowed.
 
AbstractSemaphorePtr resolveSemaphore (SemaphoreIdentifierRef aIdentifier, Short aSemId, CreateDisposition aDisp, bool aRecurse, bool aBalk, bool aAutoLock=false) throw ( SemaphoreException )
 Protected method for resolving mutex between CSA and local.
 
- Protected Member Functions inherited from corelinux::SemaphoreGroup
 SemaphoreGroup (void) throw ( Assertion )
 Default constructor not allowed.
 
 SemaphoreGroup (SemaphoreGroupCref) throw ( Assertion )
 Copy constructor not allowed.
 
SemaphoreGroupRef operator= (SemaphoreGroupCref) throw ( Assertion )
 Assignment operator not allowed.
 
void setGroupType (IntCref) const
 This indirects to CSA for non-private group types. More...
 
bool isPrivate (void) const
 Claim an unused semaphore from the group. More...
 
- Protected Member Functions inherited from corelinux::Synchronized
Guard access (void) const throw (SemaphoreException)
 Access returns a instance of Guard which is block scoped to the caller. More...
 

Additional Inherited Members

- Protected Types inherited from corelinux::Synchronized
typedef GuardGuardPtr
 
typedef const GuardGuardCptr
 
typedef GuardGuardRef
 
typedef const GuardGuardCref
 

Detailed Description

A MutexSemaphoreGroup is an extension to the SemaphoreGroup for creating only MutexSemaphore types.

Default behavior for creating semaphores via the SemaphoreGroup interface is to NOT autolock the MutexSemaphore. Use the createLockedSemaphore(...) interface to accomplish this.

Constructor & Destructor Documentation

§ MutexSemaphoreGroup() [1/3]

corelinux::MutexSemaphoreGroup::MutexSemaphoreGroup ( Short  aSemCount,
Int  Rights = OWNER_ALL 
)
throw (Assertion,
SemaphoreException
)

Default constructor creates a private group semaphores with access for OWNER_ALL.

Parameters
ShortNumber of semaphores in group
AccessRightsSpecifies access control for group
Exceptions
Assertionif aCount < 1
SemaphoreExceptionif kernel group create call fails.
See also
AccessRights

References MutexSemaphoreGroup().

§ MutexSemaphoreGroup() [2/3]

corelinux::MutexSemaphoreGroup::MutexSemaphoreGroup ( Short  aSemCount,
SemaphoreGroupIdentifierCref  aGID,
Int  aRightSet,
CreateDisposition  disp = FAIL_IF_EXISTS 
)
throw (Assertion,
SemaphoreException
)

Constructor to open or create a semaphore group with a specific identifier.

Parameters
ShortNumber of semaphores in group, this only has meaning used if failOnExist = true
SemaphoreGroupIdentifiervalid group identifier either through a system call or via another ipc mechanism
AccessRightsSpecifies access control for group
CreateDispositionindicates how to treat the conditions that the group may meet in the request:
CREATE_OR_REUSE indicates that the caller doesn't care
FAIL_IF_EXISTS indicates the attempt was for a create
FAIL_IF_NOTEXISTS indicates the attempt was for a open
Exceptions
Assertionif aCount < 1
SemaphoreExceptionfor described states

References MutexSemaphoreGroup().

§ MutexSemaphoreGroup() [3/3]

corelinux::MutexSemaphoreGroup::MutexSemaphoreGroup ( Short  aSemCount,
CharCptr  aName,
Int  aRightSet,
CreateDisposition  disp = FAIL_IF_EXISTS 
)
throw (Assertion,
SemaphoreException
)

Constructor to open or create a semaphore group by name.

Parameters
ShortNumber of semaphores in group, this only has meaning used if failOnExist = true
Charpointer to Group name
AccessRightsSpecifies access control for group
CreateDispositionindicates how to treat the conditions that the group may meet in the request: CREATE_OR_REUSE indicates that the caller doesn't care FAIL_IF_EXISTS indicates the attempt was for a create FAIL_IF_NOTEXISTS indicates the attempt was for a open
Exceptions
Assertionif aCount < 1 or aCount > system defined maximum for group
SemaphoreExceptionfor described states

Member Function Documentation

§ createLockedSemaphore() [1/2]

AbstractSemaphorePtr corelinux::MutexSemaphoreGroup::createLockedSemaphore ( bool  Recursive = false,
bool  Balking = false 
)
throw (SemaphoreException
)
virtual

Create a locked MutexSemaphore.

Returns
AbstractSemaphore aSem - pointer to created semaphore
Exceptions
SemaphoreExceptionif no sems left in group

References createSemaphore(), corelinux::FAIL_IF_EXISTS, and resolveSemaphore().

Referenced by createSemaphore().

§ createLockedSemaphore() [2/2]

AbstractSemaphorePtr corelinux::MutexSemaphoreGroup::createLockedSemaphore ( SemaphoreIdentifierRef  aIdentifier,
CreateDisposition  disp = CREATE_OR_REUSE,
bool  Recursive = false,
bool  Balking = false 
)
throw (SemaphoreException
)
virtual

Create or open (use) a specific MutexSemphore and have it automatically locked.

Parameters
SemaphoreIdentifieridentifies which semphore id to create or attempt to use
CreateDispositionindicates how to treat the conditions that the group may meet in the request: CREATE_OR_REUSE indicates that the caller doesn't care FAIL_IF_EXISTS indicates the attempt was for a create FAIL_IF_NOTEXISTS indicates the attempt was for a open
Recursiveto allow same thread multiple locks
Balkingto allow the semaphore to balk
Returns
AbstractSemaphore aSem - pointer to created or opened semaphore
Exceptions
SemaphoreExceptionif the disposition disagrees with the semaphore state, or if it is a erroneous identifier

References createSemaphore(), corelinux::ScalarIdentifier< ScalarType >::getScalar(), corelinux::SemaphoreGroup::getSemaphoreCount(), and resolveSemaphore().

§ createSemaphore() [1/3]

AbstractSemaphorePtr corelinux::MutexSemaphoreGroup::createSemaphore ( void  )
throw (SemaphoreException
)
virtual

Create a default MutexSemaphore.

Returns
AbstractSemaphore aSem - pointer to created semaphore
Exceptions
SemaphoreExceptionif no sems left in group

Implements corelinux::SemaphoreGroup.

References createLockedSemaphore(), corelinux::FAIL_IF_EXISTS, and resolveSemaphore().

Referenced by createLockedSemaphore().

§ createSemaphore() [2/3]

AbstractSemaphorePtr corelinux::MutexSemaphoreGroup::createSemaphore ( SemaphoreIdentifierRef  aIdentifier,
CreateDisposition  disp = CREATE_OR_REUSE,
bool  Recursive = false,
bool  Balking = false 
)
throw (SemaphoreException
)
virtual

Create or open (use) a specific MutexSemphore.

Parameters
SemaphoreIdentifieridentifies which semphore id to create or attempt to use
CreateDispositionindicates how to treat the conditions that the group may meet in the request: CREATE_OR_REUSE indicates that the caller doesn't care FAIL_IF_EXISTS indicates the attempt was for a create FAIL_IF_NOTEXISTS indicates the attempt was for a open
Recursiveto allow same thread multiple locks
Balkingto allow the semaphore to balk
Returns
AbstractSemaphore aSem - pointer to created or opened semaphore
Exceptions
SemaphoreExceptionif the disposition disagrees with the semaphore state, or if it is a erroneous identifier

Implements corelinux::SemaphoreGroup.

References createLockedSemaphore(), corelinux::ScalarIdentifier< ScalarType >::getScalar(), corelinux::SemaphoreGroup::getSemaphoreCount(), and resolveSemaphore().

§ createSemaphore() [3/3]

AbstractSemaphorePtr corelinux::MutexSemaphoreGroup::createSemaphore ( std::string  aName,
CreateDisposition  disp = CREATE_OR_REUSE,
bool  Recursive = false,
bool  Balking = false 
)
throw (SemaphoreException
)
virtual

Create or open (use) a specific MutexSemphore.

Parameters
stringidentifies which semphore id to create or attempt to use
CreateDispositionindicates how to treat the conditions that the group may meet in the request: CREATE_OR_REUSE indicates that the caller doesn't care FAIL_IF_EXISTS indicates the attempt was for a create FAIL_IF_NOTEXISTS indicates the attempt was for a open
Recursiveto allow same thread multiple locks
Balkingto allow the semaphore to balk
Returns
AbstractSemaphore aSem - pointer to created or opened semaphore
Exceptions
SemaphoreExceptionif the disposition disagrees with the semaphore state, or if it is a erroneous identifier

Implements corelinux::SemaphoreGroup.

§ destroySemaphore()

void corelinux::MutexSemaphoreGroup::destroySemaphore ( AbstractSemaphorePtr  aPtr)
throw (SemaphoreException
)
virtual

Destroys a created MutexSemaphore.

Note
Reference counting is not enabled so applications should ensure that only one (1) destroy is called per semaphore.
Parameters
AbstractSemaphorepointer of semaphore to destroy
Exceptions
SemaphoreExceptionif semaphore does not belong to this group or if already destroyed.

Implements corelinux::SemaphoreGroup.

References corelinux::SemaphoreGroup::getIdentifier(), corelinux::SemaphoreCommon::relinquishSemaphore(), and resolveSemaphore().


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

This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium