Set a mutex's scheduling protocol
Synopsis:
#include <pthread.h>
int pthread_mutexattr_setprotocol(
pthread_mutexattr * attr,
int protocol );
Arguments:
- attr
- A pointer to the pthread_mutexattr_t object that you
want to set the attribute in.
- protocol
- 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 or not.
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().
- PTHREAD_PRIO_NONE — owning the mutex doesn't
affect the priority and scheduling of the thread.
Library:
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
Description:
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.
Returns:
- EOK
- Success.
- ENOTSUP
- The protocol argument is an unsupported or an invalid value.
- EPERM
- The calling process doesn't have the required permission; see
procmgr_ability().
Classification:
POSIX 1003.1 MC1 TPP|TPI
Safety: |
|
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |