INOS
|
#include <inos_syn.h>
Public Member Functions | |
CINOSMultiSync (const char *aName=0) | |
void | Or (CINOSSync *aChild) |
void | And (CINOSSync *aChild) |
void | Remove (CINOSSync *aChild, bool aDelete=false) |
void | RemoveAll (bool aDelete=false) |
virtual uint32 | Wait (uint32 aTimeout=0xFFFFFFFF) override |
virtual uint32 | Wait (CINOSSync *&aChild, uint32 aTimeout=0xFFFFFFFF) |
virtual void | Reset () override |
virtual bool | UsesPolling () const override |
CINOSBus * | GetBus () |
void | SetBus (CINOSBus *apBus) |
![]() | |
CINOSSync (const char *aName=0, uint32 aInitialCount=0, bool aManual=false) | |
virtual | ~CINOSSync () |
Destroy sync object. | |
virtual const char * | GetName () |
Get name of sync object. | |
virtual void | Signal () |
Put object into the signaled state. | |
virtual void | SignalEx (CINOSTaskExMsg *apMsg, uint32 auRplId, uint32 auAppError) |
virtual bool | MsgEvent (CINOSTaskExMsg *apMsg) |
volatile uint32 * | GetLockAdr () |
Return pointer to core locking structure. | |
bool | IsSame (CINOSSync *i_pSync) |
int | operator< (const CINOSSync &aSync) const |
int | operator== (const CINOSSync &aSync) const |
int | operator< (const char *aName) const |
int | operator== (const char *aName) const |
Protected Member Functions | |
virtual bool | Signaled (CINOSSync *&aChild) override |
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:
void CINOSMultiSync::And | ( | CINOSSync * | aChild | ) |
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
void CINOSMultiSync::Or | ( | CINOSSync * | aChild | ) |
add an 'or' child to the list of children (not reentrant), means: only one task is allowed to call that function at a time)
void CINOSMultiSync::Remove | ( | CINOSSync * | aChild, |
bool | aDelete = false |
||
) |
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 |
void CINOSMultiSync::RemoveAll | ( | bool | aDelete = false | ) |
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 |
|
overridevirtual |
|
overrideprotectedvirtual |
Reimplemented from CINOSSync.
|
inlineoverridevirtual |
Reimplemented from CINOSSync.
|
virtual |
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)
|
overridevirtual |
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.