DosAddMuxWaitSem

DosAddMuxWaitSem adds an event semaphore or a mutex semaphore a MuxWait semaphore list.

Syntax
DosAddMuxWaitSem( hmuxSemaphore, pSemRecord )

Parameters

 * HMUX hmuxSemaphore (input):The handle of the MuxWait semaphore to which another semaphore will be added.
 * PSEMRECORD pSemRecord (input):The address of a SEMRECORD to be added to the specified MuxWait semaphore.

Returns
APIRET rc The following values can be returned: type than those already in the list for hmuxSemaphore.
 * 0 NO_ERROR - Operation was successful.
 * 6 ERROR_INVALID_HANDLE - Error, The value in hmuxSemaphore does not point to a valid semaphore, The calling process must first have access to the semaphore in question
 * 8 ERROR_NOT_ENOUGH_MEMORY - Error, The system memory limit has been exhausted
 * 87 ERROR_INVALID_PARAMETER - Error, One or more of the parameters contains an illegal value.
 * 100 ERROR_TOO_MANY_SEMAPHORES - Error, The system limit of 64 semaphores has been exceeded for this MuxWait semaphore.
 * 105 ERROR_SEM_OWNER_DIED - Error, The owner of the MuxWait semaphore specified has terminated.
 * 284 ERROR_DUPLICATE_HANDLE - Error, The semaphore referred to in pSemRecord has already been added to the specified MuxWait semaphore.
 * 292 ERROR_WRONG_TYPE - Error, The semaphore referred to in pSemRecord is of a different

Gotchas
All processes that have access to a shared MuxWait semaphore must also have access to the event/mutex semaphore that is to be added to the MuxWait list. If a process does not have access to this semaphore then it will unblock and return the error ERROR_INVALID_HANDLE. DosAddMuxWaitSem will NOT return an error in this case. The processes wishing to gain access to the MuxWait semaphore will return errors until proper access has been obtained.

Sample Code

 * 1) define INCL_DOSSEMAPHORES
 * 2) include 

HMUX hmuxMySemaphore;     /* MySemaphore handle */ SEMRECORD SemRecord;      /* Record containing info about the sem */ /* I want to add to MySemaphore's list */

/* access is gained to the semaphore in question */ /* either by DosCreateMuxWaitSem ... */	/* ... or by DosOpenMuxWaitSem */ /* its handle is placed in hmuxMySemaphore */

/* SemRecord is filled with appropriate information about */ /* the semaphore I wish to add to hmuxMySemaphore's list */

rc = DosAddMuxWaitSem(hmuxMySemaphore, &SemRecord);

if (rc != 0) {	 /* We got an error to take care of. */	} 