mirror of https://github.com/mkerrisk/man-pages
153 lines
5.4 KiB
Plaintext
153 lines
5.4 KiB
Plaintext
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
|
.TH "PTHREAD_MUTEXATTR_GETPROTOCOL" 3P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
|
.\" pthread_mutexattr_getprotocol
|
|
.SH PROLOG
|
|
This manual page is part of the POSIX Programmer's Manual.
|
|
The Linux implementation of this interface may differ (consult
|
|
the corresponding Linux manual page for details of Linux behavior),
|
|
or the interface may not be implemented on Linux.
|
|
.SH NAME
|
|
pthread_mutexattr_getprotocol, pthread_mutexattr_setprotocol \- get
|
|
and set the protocol attribute of the mutex
|
|
attributes object (\fBREALTIME THREADS\fP)
|
|
.SH SYNOPSIS
|
|
.LP
|
|
\fB#include <pthread.h>
|
|
.br
|
|
.sp
|
|
\fBint pthread_mutexattr_getprotocol(const pthread_mutexattr_t *
|
|
.br
|
|
\ \ \ \ \ \ restrict\fP \fIattr\fP\fB, int *restrict\fP \fIprotocol\fP\fB);
|
|
.br
|
|
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *\fP\fIattr\fP\fB,
|
|
.br
|
|
\ \ \ \ \ \ int\fP \fIprotocol\fP\fB); \fP
|
|
.sp
|
|
\fP
|
|
\fB
|
|
.br
|
|
\fP
|
|
.SH DESCRIPTION
|
|
.LP
|
|
The \fIpthread_mutexattr_getprotocol\fP() and \fIpthread_mutexattr_setprotocol\fP()
|
|
functions, respectively, shall get and set
|
|
the protocol attribute of a mutex attributes object pointed to by
|
|
\fIattr\fP which was previously created by the function \fIpthread_mutexattr_init\fP().
|
|
.LP
|
|
The \fIprotocol\fP attribute defines the protocol to be followed in
|
|
utilizing mutexes. The value of \fIprotocol\fP may be one
|
|
of:
|
|
.LP
|
|
.sp
|
|
PTHREAD_PRIO_NONE
|
|
.br
|
|
.sp
|
|
PTHREAD_PRIO_INHERIT
|
|
.br
|
|
.sp
|
|
.sp
|
|
PTHREAD_PRIO_PROTECT
|
|
.br
|
|
.sp
|
|
.LP
|
|
which are defined in the \fI<pthread.h>\fP header.
|
|
.LP
|
|
When a thread owns a mutex with the PTHREAD_PRIO_NONE \fIprotocol\fP
|
|
attribute, its priority and scheduling shall not be
|
|
affected by its mutex ownership.
|
|
.LP
|
|
When a thread is blocking higher priority threads because of owning
|
|
one or more mutexes with the PTHREAD_PRIO_INHERIT
|
|
\fIprotocol\fP attribute, it shall execute at the higher of its priority
|
|
or the priority of the highest priority thread waiting on
|
|
any of the mutexes owned by this thread and initialized with this
|
|
protocol.
|
|
.LP
|
|
When a thread owns one or more mutexes initialized with the PTHREAD_PRIO_PROTECT
|
|
protocol, it shall execute at the higher of its
|
|
priority or the highest of the priority ceilings of all the mutexes
|
|
owned by this thread and initialized with this attribute,
|
|
regardless of whether other threads are blocked on any of these mutexes
|
|
or not.
|
|
.LP
|
|
While a thread is holding a mutex which has been initialized with
|
|
the PTHREAD_PRIO_INHERIT or PTHREAD_PRIO_PROTECT protocol
|
|
attributes, it shall not be subject to being moved to the tail of
|
|
the scheduling queue at its priority in the event that its
|
|
original priority is changed, such as by a call to \fIsched_setparam\fP().
|
|
Likewise, when a thread unlocks a mutex that has been initialized
|
|
with the PTHREAD_PRIO_INHERIT or PTHREAD_PRIO_PROTECT protocol
|
|
attributes, it shall not be subject to being moved to the tail of
|
|
the scheduling queue at its priority in the event that its
|
|
original priority is changed.
|
|
.LP
|
|
If a thread simultaneously owns several mutexes initialized with different
|
|
protocols, it shall execute at the highest of the
|
|
priorities that it would have obtained by each of these protocols.
|
|
.LP
|
|
When a thread makes a call to \fIpthread_mutex_lock\fP(), the mutex
|
|
was
|
|
initialized with the protocol attribute having the value PTHREAD_PRIO_INHERIT,
|
|
when the calling thread is blocked because the mutex
|
|
is owned by another thread, that owner thread shall inherit the priority
|
|
level of the calling thread as long as it continues to own
|
|
the mutex. The implementation shall update its execution priority
|
|
to the maximum of its assigned priority and all its inherited
|
|
priorities. Furthermore, if this owner thread itself becomes blocked
|
|
on another mutex, the same priority inheritance effect shall
|
|
be propagated to this other owner thread, in a recursive manner.
|
|
.SH RETURN VALUE
|
|
.LP
|
|
Upon successful completion, the \fIpthread_mutexattr_getprotocol\fP()
|
|
and \fIpthread_mutexattr_setprotocol\fP() functions
|
|
shall return zero; otherwise, an error number shall be returned to
|
|
indicate the error.
|
|
.SH ERRORS
|
|
.LP
|
|
The \fIpthread_mutexattr_setprotocol\fP() function shall fail if:
|
|
.TP 7
|
|
.B ENOTSUP
|
|
The value specified by \fIprotocol\fP is an unsupported value.
|
|
.sp
|
|
.LP
|
|
The \fIpthread_mutexattr_getprotocol\fP() and \fIpthread_mutexattr_setprotocol\fP()
|
|
functions may fail if:
|
|
.TP 7
|
|
.B EINVAL
|
|
The value specified by \fIattr\fP or \fIprotocol\fP is invalid.
|
|
.TP 7
|
|
.B EPERM
|
|
The caller does not have the privilege to perform the operation.
|
|
.sp
|
|
.LP
|
|
These functions shall not return an error code of [EINTR].
|
|
.LP
|
|
\fIThe following sections are informative.\fP
|
|
.SH EXAMPLES
|
|
.LP
|
|
None.
|
|
.SH APPLICATION USAGE
|
|
.LP
|
|
None.
|
|
.SH RATIONALE
|
|
.LP
|
|
None.
|
|
.SH FUTURE DIRECTIONS
|
|
.LP
|
|
None.
|
|
.SH SEE ALSO
|
|
.LP
|
|
\fIpthread_cond_destroy\fP(), \fIpthread_create\fP(), \fIpthread_mutex_destroy\fP(),
|
|
the
|
|
Base Definitions volume of IEEE\ Std\ 1003.1-2001, \fI<pthread.h>\fP
|
|
.SH COPYRIGHT
|
|
Portions of this text are reprinted and reproduced in electronic form
|
|
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
|
|
-- Portable Operating System Interface (POSIX), The Open Group Base
|
|
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
|
|
Electrical and Electronics Engineers, Inc and The Open Group. In the
|
|
event of any discrepancy between this version and the original IEEE and
|
|
The Open Group Standard, the original IEEE and The Open Group Standard
|
|
is the referee document. The original Standard can be obtained online at
|
|
http://www.opengroup.org/unix/online.html .
|