32-bit Semaphore Structures for OS/2 Warp V3.0 RETAIL kernel

SEVENT Shared Event Semaphore

┌──────────────────┬────┬────────┬────┬────────────────────────────────────────┐
│Field NameOffLengthTypeDescription                             │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│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 NameOffLengthTypeDescription                             │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│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 NameOffLengthTypeDescription                             │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│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 NameOffLengthTypeDescription                             │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│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 NameOffLengthTypeDescription                             │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│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 NameOffLengthTypeDescription                             │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│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 NameOffLengthTypeDescription                             │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│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 NameOffLengthTypeDescription                             │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│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 NameOffLengthTypeDescription                             │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│hsem              │+0  │4       │D   │semaphore handle                        │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│psz               │+4  │4       │D   │pointer to the string                   │
├──────────────────┼────┼────────┼────┼────────────────────────────────────────┤
│pNext             │+8  │4       │D   │pointer to next string node             │
└──────────────────┴────┴────────┴────┴────────────────────────────────────────┘


[Back: 32-bit Semaphore Structures for OS/2 Warp V4.0 and OS/2 Warp V3.0 ALLSTRICT kernel]
[Next: System Semaphore Structures]