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 Guard * | GuardPtr
typedef const Guard * | GuardCptr
typedef Guard & | GuardRef
typedef const Guard & | GuardCref

## 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

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

  Short | Number of semaphores in group
  AccessRights | Specifies access control for group

Exceptions

  Assertion | if aCount < 1
  SemaphoreException | if kernel group create call fails.

See also
  AccessRights

References MutexSemaphoreGroup().

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

  Short | Number of semaphores in group, this only has meaning used if failOnExist = true
  SemaphoreGroupIdentifier | valid group identifier either through a system call or via another ipc mechanism
  AccessRights | Specifies access control for group
  CreateDisposition | indicates 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

  Assertion | if aCount < 1
  SemaphoreException | for described states

References MutexSemaphoreGroup().

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

  Short | Number of semaphores in group, this only has meaning used if failOnExist = true
  Char | pointer to Group name
  AccessRights | Specifies access control for group
  CreateDisposition | indicates 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

  Assertion | if aCount < 1 or aCount > system defined maximum for group
  SemaphoreException | for described states

## Member Function Documentation

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

  SemaphoreException | if no sems left in group

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

Referenced by createSemaphore().

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

  SemaphoreIdentifier | identifies which semphore id to create or attempt to use
  CreateDisposition | indicates 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
  Recursive | to allow same thread multiple locks
  Balking | to allow the semaphore to balk

Returns
  AbstractSemaphore aSem - pointer to created or opened semaphore

Exceptions

  SemaphoreException | if 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().

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

virtual

Create a default MutexSemaphore.

Returns
  AbstractSemaphore aSem - pointer to created semaphore

Exceptions

  SemaphoreException | if no sems left in group

Implements corelinux::SemaphoreGroup.

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

Referenced by createLockedSemaphore().

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

  SemaphoreIdentifier | identifies which semphore id to create or attempt to use
  CreateDisposition | indicates 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
  Recursive | to allow same thread multiple locks
  Balking | to allow the semaphore to balk

Returns
  AbstractSemaphore aSem - pointer to created or opened semaphore

Exceptions

  SemaphoreException | if 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().

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

  string | identifies which semphore id to create or attempt to use
  CreateDisposition | indicates 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
  Recursive | to allow same thread multiple locks
  Balking | to allow the semaphore to balk

Returns
  AbstractSemaphore aSem - pointer to created or opened semaphore

Exceptions

  SemaphoreException | if the disposition disagrees with the semaphore state, or if it is a erroneous identifier

Implements corelinux::SemaphoreGroup.

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

  AbstractSemaphore | pointer of semaphore to destroy

Exceptions

  SemaphoreException | if 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:

- MutexSemaphoreGroup.hpp
- MutexSemaphoreGroup.cpp

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