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 |