DosDeleteMuxWaitSem: Difference between revisions
Appearance
m Ak120 moved page OS2 API:CPI:DosDeleteMuxWaitSem to DosDeleteMuxWaitSem |
mNo edit summary |
||
Line 1: | Line 1: | ||
DosDeleteMuxWaitSem deletes a specified semaphore from a muxwait list. | DosDeleteMuxWaitSem deletes a specified semaphore from a muxwait list. | ||
== Syntax == | |||
DosDeleteMuxWaitSem( ''phmuxSemaphore'', ''hsemSemaphore'' ) | |||
=== Parameters === | === Parameters === | ||
Line 10: | Line 9: | ||
=== Returns === | === Returns === | ||
;APIRET rc:The following values can be returned: | |||
The following values can be returned | |||
{|class="wikitable" | {|class="wikitable" | ||
|0||NO_ERROR||Operation was successful. | |||
|- | |- | ||
| | |6||ERROR_INVALID_HANDLE||Error, The calling process must first have access to the shared semaphore in question before adding it to the muxwait list | ||
| | |||
| | |||
|- | |- | ||
| | |286||ERROR_EMPTY_MUXWAIT||Error, The MuxWait semaphore ''hmuxSemaphore'' is empty | ||
| | |||
| | |||
| | |||
|Error, The MuxWait semaphore ''hmuxSemaphore'' is empty | |||
|} | |} | ||
=== Gotchas === | === Gotchas === | ||
Line 40: | Line 27: | ||
<pre> | <pre> | ||
#define INCL_DOSSEMAPHORES | #define INCL_DOSSEMAPHORES | ||
#include | #include <os2.h> | ||
HMUX hmuxMySemaphore; /* my muxwait semaphore handle */ | HMUX hmuxMySemaphore; /* my muxwait semaphore handle */ |
Latest revision as of 02:00, 21 February 2020
DosDeleteMuxWaitSem deletes a specified semaphore from a muxwait list.
Syntax
DosDeleteMuxWaitSem( phmuxSemaphore, hsemSemaphore )
Parameters
- PHMUX phmuxSemaphore (input)
- This is a pointer to the HMUX that will get the handle to the new semaphore.
- HSEM hsemSemaphore (input)
- The handle to the semaphore to be removed from the muxwait list. It must be cast to HSEM from either HEV or HMTX.
Returns
- APIRET rc
- The following values can be returned:
0 | NO_ERROR | Operation was successful. |
6 | ERROR_INVALID_HANDLE | Error, The calling process must first have access to the shared semaphore in question before adding it to the muxwait list |
286 | ERROR_EMPTY_MUXWAIT | Error, The MuxWait semaphore hmuxSemaphore is empty |
Gotchas
This may only be called from a process that has gained proper access to the MuxWait semaphore via either DosCreateMuxWaitSem or DosOpenMuxWaitSem. If the deleted semaphore is the last semaphore in the muxwait list, all threads blocking on the MuxWait semaphore are unblocked.
If the deleted semaphore is the only "hold-out" in a MuxWait semaphore with the DCMW_WAIT_ALL attribute, all threads blocked on the MuxWait semaphore will be unblocked.
Sample Code
#define INCL_DOSSEMAPHORES #include <os2.h> HMUX hmuxMySemaphore; /* my muxwait semaphore handle */ HMTX hmtxMyOtherSemaphore; /* my mutex semaphore handle */ /* wave the magic wand and... */ /* hmuxMySemaphore contains a valid muxwait sem handle */ /* hmtxMyOtherSemaphore contains a valid mutex sem handle */ rc = DosDeleteMuxWaitSem( nmuxMySemaphore, (HSEM)hmtxMyOtherSemaphore); if (rc != 0) { /* We got an error to take care of. */ }