FSH_SEMREQUEST

Purpose

This function allows an FSD to obtain exclusive access to a semaphore.

Calling Sequence

int far pascal FSH_SEMREQUEST(pSem, cmsTimeout) void far * pSem; unsigned long cmsTimeout;

Where

pSem is the handle to the system semaphore or the long address of the ram semaphore.

cmsTimeout is the number of milliseconds to wait.

Returns

If no error is detected, a zero error code is returned. If an error is detected, one of the following error codes is returned:

ERROR_INTERRUPT – the current thread received a signal.

ERROR_SEM_TIMEOUT – the time-out expired without gaining access to the semaphore.

ERROR_SEM_OWNER_DIED – the owner of the semaphore died.

ERROR_TOO_MANY_SEM_REQUESTS – there are too many semaphore requests in progress.

ERROR_PROTECTION_VIOLATION – the semaphore is inaccessible.

Remarks

The time-out value of 0xFFFFFFFF indicates an indefinite time-out.

The caller may receive access to the semaphore after the time-out period has expired without receiving an ERROR_SEM_TIMEOUT. Semaphore time-out values, therefore, should not be used for exact timing and sequencing.

FSH_SEMREQUEST may block.

Note: OS/2 does not validate input parameters. An FSD, therefore, should call FSH_PROBEBUF where appropriate.