Perform an operation on a synchronization object
Note: 
Don't use the 
SyncCtl() or 
SyncCtl_r() kernel call
directly;
instead, call one of the following:
 
 
Synopsis:
#include <sys/neutrino.h>
int SyncCtl( int cmd,
             sync_t * sync,
             void * data );
int SyncCtl_r( int cmd,
               sync_t * sync,
               void * data );
 
Arguments:
- 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.
    
    
Note: 
    You can't use 
_NTO_SCTL_SETEVENT with a robust mutex (see
    
pthread_mutexattr_setrobust()).
    The two mechanisms achieve the same goal in different ways.
    
 
   
  - _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.
 
 
Library:
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
 
Description:
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.
Note: 
In order to change the priority ceiling to a value above the maximum permitted for unprivileged processes,
your process must have the 
PROCMGR_AID_PRIORITY ability enabled.
For more information, see
procmgr_ability().
 
 
Returns:
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 the negative of a
            value from the Errors section. 
 
 
Errors:
- EAGAIN
 
- All kernel synchronization event objects are in use.
 
- EFAULT
 
- A fault occurred when the kernel tried to access sync or data.
 
- EINVAL
 
- One of the following occurred:
  
  - The synchronization object pointed to by sync doesn't exist.
 
  - The ceiling priority value pointed to by data is out of range.
 
  - You tried to use _NTO_SCTL_SETEVENT with a robust mutex.
 
  
 
- ENOSYS
 
- The SyncCtl() and SyncCtl_r() functions aren't currently supported.
 
- EPERM
 
- The calling process doesn't have the required permission; see
  procmgr_ability().
 
 
Classification:
QNX Neutrino
| Safety: | 
  | 
| Cancellation point | 
No | 
| Interrupt handler | 
No | 
| Signal handler | 
Yes | 
| Thread | 
Yes |