SEVENT Shared Event Semaphore
┌──────────────────┬────┬────────┬────┬────────────────────────────────────────┐ │Field Name │Off │Length │Type│Description │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usFlags │+0 │2 │W │attributes │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pMuxQ │+2 │4 │D │pointer to the mux queue │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usPostCt │+6 │2 │W │number of posts │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pOpenQ │+8 │4 │D │pointer to the open queue │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pszName │+c │4 │D │name of semaphore, null if anonymous │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │ptcb │+10 │4 │D │ptcb of caller │ └──────────────────┴────┴────────┴────┴────────────────────────────────────────┘
PEVENT Private Event Semaphore
┌──────────────────┬────┬────────┬────┬────────────────────────────────────────┐ │Field Name │Off │Length │Type│Description │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usFlags │+0 │2 │W │attributes │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pMuxQ │+2 │4 │D │pointer to the mux queue │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usPostCt │+6 │2 │W │number of posts │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pOpenCt │+8 │2 │W │number of opens │ └──────────────────┴────┴────────┴────┴────────────────────────────────────────┘
SMUTEX Shared Mutex Semaphore
┌──────────────────┬────┬────────┬────┬────────────────────────────────────────┐ │Field Name │Off │Length │Type│Description │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usFlags │+0 │2 │W │attributes │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pMuxQ │+2 │4 │D │pointer to the mux queue │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usRequestCt │+6 │2 │W │number of requests │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usSlotNum │+8 │2 │W │slot number of the owning thread │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usRequesterCt │+a │2 │W │number of requesters │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pOpenQ │+c │4 │D │pointer to the open queue │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pszName │+10 │4 │D │name of semaphore, null if anonymous │ └──────────────────┴────┴────────┴────┴────────────────────────────────────────┘
PMUTEX Private Mutex Semaphore
┌──────────────────┬────┬────────┬────┬────────────────────────────────────────┐ │Field Name │Off │Length │Type│Description │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usFlags │+0 │2 │W │attributes │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pMuxQ │+2 │4 │D │pointer to the mux queue │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usRequestCt │+6 │2 │W │number of requests │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usSlotNum │+8 │2 │W │slot number of the owning thread │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usRequesterCt │+a │2 │W │number of requesters │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usOpenCt │+c │2 │W │number of opens │ └──────────────────┴────┴────────┴────┴────────────────────────────────────────┘
SMUX Shared Mux Wait Semaphore
┌──────────────────┬────┬────────┬────┬────────────────────────────────────────┐ │Field Name │Off │Length │Type│Description │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usFlags │+0 │2 │W │attributes │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │cSemRec │+2 │2 │W │count of semaphore records │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pSemRec │+4 │4 │D │array of semaphore record entries │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usWaitCt │+8 │2 │W │number of threads waiting on the mux │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pOpenQ │+a │4 │D │pointer to the open queue │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pszName │+e │2 │W │name of semaphore, null if anonymous │ └──────────────────┴────┴────────┴────┴────────────────────────────────────────┘
PMUX Private Mux Wait Semaphore
┌──────────────────┬────┬────────┬────┬────────────────────────────────────────┐ │Field Name │Off │Length │Type│Description │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usFlags │+0 │2 │W │attributes │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │cSemRec │+2 │2 │W │count of semaphore records │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pSemRec │+4 │4 │D │array of semaphore record entries │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usWaitCt │+8 │2 │W │number of threads waiting on the mux │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usOpenCt │+a │2 │W │number of opens │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pPTDA │+c │4 │D │pointer to PTDA of creator │ └──────────────────┴────┴────────┴────┴────────────────────────────────────────┘
OPENQ Open Queue Node Structure
┌──────────────────┬────┬────────┬────┬────────────────────────────────────────┐ │Field Name │Off │Length │Type│Description │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pidOpener │+0 │2 │W │process id of opening process │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │usOpenCt │+2 │2 │W │number of Opens for this process │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pNextOpen │+4 │4 │D │pointer to next node in list │ └──────────────────┴────┴────────┴────┴────────────────────────────────────────┘
MUXQ Mux Queue Node Structure
┌──────────────────┬────┬────────┬────┬────────────────────────────────────────┐ │Field Name │Off │Length │Type│Description │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pMux │+0 │4 │D │pointer to a mux (shared or private) │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pNextMux │+4 │4 │D │pointer to next mux waiter in list │ └──────────────────┴────┴────────┴────┴────────────────────────────────────────┘
SEMSTRNODE Semaphore String Node
┌──────────────────┬────┬────────┬────┬────────────────────────────────────────┐ │Field Name │Off │Length │Type│Description │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │hsem │+0 │4 │D │semaphore handle │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │psz │+4 │4 │D │pointer to the string │ ├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤ │pNext │+8 │4 │D │pointer to next string node │ └──────────────────┴────┴────────┴────┴────────────────────────────────────────┘