DosAddMuxWaitSem

From EDM2
Revision as of 21:20, 16 May 2016 by Martini (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Syntax

rc = 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

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

type than those already in the list for hmuxSemaphore.

Include Info

  1. define INCL_DOSSEMAPHORES


  1. include <os2.h>


Usage Explanation

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

Relevant Structures

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

#define INCL_DOSSEMAPHORES
#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. */
	}

See Also

CPI:DosCloseMuxWaitSem, CPI:DosCreateMuxWaitSem,CPI:DosDeleteMuxWaitSem CPI:DosOpenMuxWaitSem, CPI:DosQueryMuxWaitSem, CPI:DosWaitMuxWaitSem