Set a mutex's scheduling protocol
#include <pthread.h> int pthread_mutexattr_setprotocol( pthread_mutexattr * attr, int protocol );
- A pointer to the pthread_mutexattr_t object that you want to set the attribute in.
- The new value of the scheduling protocol; one of:
- PTHREAD_PRIO_INHERIT — when a thread is blocking higher-priority threads by locking one or more mutexes with this attribute, raise the thread's priority to that of the highest priority thread waiting on the PTHREAD_PRIO_INHERIT mutex.
PTHREAD_PRIO_PROTECT — execute the thread at
the highest priority or priority ceilings of all
the mutexes owned by the thread and initialized with
PTHREAD_PRIO_PROTECT, whether other threads are blocked
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() .
- PTHREAD_PRIO_NONE — owning the mutex doesn't affect the priority and scheduling of the thread.
The pthread_mutexattr_setprotocol() function sets the mutex attribute attr's scheduling protocol to protocol. The structure pointed to by attr must have been previously created with pthread_mutexattr_init().
The protocol attribute defines the protocol for using mutexes. A thread holding a PTHREAD_PRIO_INHERIT mutex won't be moved to the tail of the scheduling queue if its original priority is changed (by a call to pthread_schedsetparam(), for example). This remains true if the thread unlocks the PTHREAD_PRIO_INHERIT mutex.
- The protocol argument is an unsupported or an invalid value.
- The calling process doesn't have the required permission; see procmgr_ability() .