INOS
|
#include <inos_syn.h>
Protected Member Functions | |
virtual bool | Signaled (CINOSSync *&aChild) |
void | WakeUp () |
void | Cleanup () |
DECLARE_DYNAMIC (CINOSMultiSync) | |
![]() | |
virtual CINOSSyncNode * | GetNode () |
virtual void | SetNode (CINOSSyncNode *aNode) |
void | SignalAndUnlock (uint32 auMsr) |
Put object into the signaled state and release the core lock. | |
Protected Attributes | |
CINOSSyncNode * | pFirstChild |
CINOSSyncNode * | pLastChild |
CINOSExceptionCleanup * | pCleanup |
bool | m_bUsesPolling |
CINOSBus * | m_pBus |
![]() | |
const char * | m_pName |
name of sync object | |
uint32 | m_uCount |
signaled count of object | |
bool | m_bManual |
manual object yes/no | |
tTaskId | m_idFstWaiting |
id of first task waiting for the sync object | |
tTaskId | m_idLstWaiting |
id of last task waiting for the sync object | |
SINOSCoreLock | m_Lock |
core lock | |
CINOSSyncNode * | m_pNode |
pointer to object node (if any) | |
Friends | |
class | CINOSSyncNode |
Wait for 1..n CINOSSync objects to become signaled. Each CINOSSync object can either be waited for 'or' or 'and'. All 'and' objects needs to be signaled in order for a 'multisync' to become signaled, while only one of the 'or' objects needs to become signaled.
The 'management' function (Add, Or, Remove, ...) of this class's objects of this class are not thread-safe, means that they are intended to be used by one task only. The Wait function, on the other hand, are thread-safe. Therefore, multiple tasks could be waiting for the same mutlisync object.
Note that with INOS_KERNEL, some seldom used features have been dropped to reduce complexity. Therefore, the following limiations exist:
add an 'and' child to the list of children (not reentrant, means: only one task is allowed to call that function at a time)
|
inline |
get/set bus used for bus sleep when polling (busy wait). if this is set to null, a relinquish is performed instead
add an 'or' child to the list of children (not reentrant), means: only one task is allowed to call that function at a time)
remove child from the list of children (not reentrant, means: only one task is allowed to call that function at a time)
aDelete | If true, aChild will be deleted |
remove all children from the list of children (not reentrant, means: only one task is allowed to call that function at a time)
aDelete | If true, the CINOSSync* objects will be deleted |
Reimplemented from CINOSSync.
wait for signaled state for max. aTimeout usec and return child that caused the signal (not reentrant, means: only one task is allowed to call that function at a time)
|
virtual |
wait for signaled state for max. aTimeout usec (not reentrant, means: only one task is allowed to call that function at a time)
Reimplemented from CINOSSync.