SyncSemPost(), SyncSemPost_r()

Increment a semaphore

Synopsis:

#include <sys/neutrino.h>

int SyncSemPost( sync_t* sync );

int SyncSemPost_r( sync_t* sync );

Arguments:

sync
A pointer to the synchronization object for the semaphore that you want to increment.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The SyncSemPost() and SyncSemPost_r() kernel calls increment the semaphore referenced by the sync argument. If any threads are blocked on the semaphore, the one waiting the longest is unblocked and allowed to run.

These functions are identical, except for the way they indicate errors. See the Returns section for details.


Note: You should use the POSIX sem_post() function instead of calling SyncSemPost() directly.

Returns:

The only difference between these functions is the way they indicate errors:

SyncSemPost()
If an error occurs, the function returns -1 and sets errno. Any other value returned indicates success.
SyncSemPost_r()
Returns EOK on success. This function does NOT set errno. If an error occurs, the function returns one of the values listed in the Errors section.

Errors:

EAGAIN
Not enough memory for the kernel to create the internal sync object.
EFAULT
Invalid pointer.
EINTR
A signal interrupted this function.
EINVAL
The sync argument doesn't refer to a valid semaphore.

Classification:

QNX Neutrino

Safety:
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes

See also:

sem_destroy(), sem_init(), sem_post(), sem_trywait(), sem_wait(), SyncDestroy(), SyncSemWait(), SyncTypeCreate()