Perform an operation on a synchronization object
|
Don't use the SyncCtl() or SyncCtl_r() kernel call
directly;
instead, call one of the following:
|
#include <sys/neutrino.h>
int SyncCtl( int cmd,
sync_t * sync,
void * data );
int SyncCtl_r( int cmd,
sync_t * sync,
void * data );
- cmd
- The operation type; one of:
- _NTO_SCTL_GETPRIOCEILING —
get the ceiling priority of the mutex pointed to by sync
and put it in the variable pointed to by data.
- _NTO_SCTL_SETPRIOCEILING —
return the original ceiling priority.
Set the ceiling priority of the mutex pointed to by sync
to the value pointed to by data.
- _NTO_SCTL_SETEVENT —
attach an event, pointed to by data, to the mutex pointed
to by sync.
- _NTO_SCTL_MUTEX_WAKEUP —
wake up threads that are blocked on a mutex.
The data argument points to a structure that specifies
the process and thread IDs.
- sync
- A pointer to the synchronization object that you want to manipulate.
- data
- A pointer to data associated with the command, or a place where the
function can store the requested information, depending on the operation.
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
The SyncCtl() and SyncCtl_r() kernel calls let you:
- set or get a ceiling priority for a mutex
- attach an event to a mutex so you'll be notified when the mutex changes to the DEAD state
- wake up threads that are blocked on a mutex
These functions are similar, except for the way they indicate errors.
See the Returns section for details.
The only difference between these functions is the way they indicate errors:
- SyncCtl()
- If an error occurs, the function returns -1 and sets
errno.
Any other value returned
indicates success.
- SyncCtl_r()
- Returns EOK on success.
This function does NOT set errno.
If an error occurs, the function returns any value listed in the Errors
section.
- EAGAIN
- All kernel synchronization event objects are in use.
- EFAULT
- A fault occurred when the kernel tried to access sync or data.
- EINVAL
- The synchronization object pointed to by sync doesn't exist,
or the ceiling priority value pointed to by data is out of range.
- ENOSYS
- The SyncCtl() and SyncCtl_r() functions aren't currently supported.
QNX Neutrino
Safety: | |
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |
pthread_mutex_getprioceiling(),
pthread_mutex_setprioceiling(),
pthread_mutex_wakeup_np(),
SyncCondvarSignal(),
SyncCondvarWait(),
SyncDestroy(),
SyncMutexEvent(),
SyncMutexLock(),
SyncMutexRevive(),
SyncMutexUnlock(),
SyncTypeCreate()