aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--man3/pthread_rwlockattr_setkind_np.3107
1 files changed, 67 insertions, 40 deletions
diff --git a/man3/pthread_rwlockattr_setkind_np.3 b/man3/pthread_rwlockattr_setkind_np.3
index 86d5211b10..eb42361c85 100644
--- a/man3/pthread_rwlockattr_setkind_np.3
+++ b/man3/pthread_rwlockattr_setkind_np.3
@@ -1,12 +1,11 @@
.\"Copyright (c) 2010 Novell Inc., written by Robert Schweikert
-.\" <mtk.manpages@gmail.com>
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
-.\" manual under the conditions for verbatim copying, provided that the
+.\" manual under the conditions for verbat`im copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
@@ -21,80 +20,108 @@
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
-.TH PTHREAD_RWLOCKATTR_SETKIND_NP 3 2010-06-09 "Linux Programmer's Manual"
+.TH PTHREAD_RWLOCKATTR_SETKIND_NP 3 2014-10-01 "Linux Programmer's Manual"
.SH NAME
pthread_rwlockattr_setkind_np, pthread_rwlockattr_getkind_np \- set/get
the read-write lock kind of the thread read-write lock attribute object
.SH SYNOPSIS
.nf
-.B #define _XOPEN_SOURCE 500
.B #include <pthread.h>
-.BI "int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *" attr ,
-.BI " int" pref);
-.BI "int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *" attr ,
-.BI " int *" pref);
+.BI "int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *" attr ,
+.BI " int " pref );
+.BI "int pthread_rwlockattr_getkind_np(const pthread_rwlockattr_t *" attr ,
+.BI " int *" pref );
.sp
Compile and link with \fI\-pthread\fP.
+.sp
+.fi
+.in -4n
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.in
+.sp
+.BR pthread_rwlockattr_setkind_np (),
+.BR pthread_rwlockattr_getkind_np ():
+.br
+.RS 4
+.ad l
+_XOPEN_SOURCE\ >=\ 500 || _POSIX_C_SOURCE >= 200809L
+.RE
+.ad
.SH DESCRIPTION
The
.BR pthread_rwlockattr_setkind_np ()
-function
-sets the kind of read-write lock of the
-thread read-write lock attribute object referred to by
+function sets the "lock kind" attribute of the
+read-write lock attribute object referred to by
.I attr
-to the value specified with
+to the value specified in
.IR pref .
The argument
.I pref
-may be set to
-.IR PTHREAD_RWLOCK_PREFER_READER_NP ,
-.IR PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP ,
-or
-.IR PTHREAD_RWLOCK_PREFER_WRITER_NP .
-The default lock setting is
-.IR PTHREAD_RWLOCK_PREFER_READER_NP .
-A thread may hold multiple read locks, i.e. read locks are recursive.
+may be set to one of the following:
+.TP
+.B PTHREAD_RWLOCK_PREFER_READER_NP
+This is the default.
+A thread may hold multiple read locks; that is, read locks are recursive.
According to The Single Unix Specification, the behavior is unspecified when a
reader tries to place a lock, and there is no write lock but writers are
-waiting. Giving preference to the reader, as is set by default with the
-.IR PTHREAD_RWLOCK_PREFER_READER_NP value
+waiting.
+Giving preference to the reader, as is set by
+.BR PTHREAD_RWLOCK_PREFER_READER_NP ,
implies that the reader will receive the requested lock, even if
-a writer is waiting. As long as there are readers the writer will be
-starved. Setting the kind to
-.IR PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP ,
+a writer is waiting.
+As long as there are readers, the writer will be
+starved.
+.TP
+.B PTHREAD_RWLOCK_PREFER_WRITER_NP
+This is intended as the write lock analog of
+.BR PTHREAD_RWLOCK_PREFER_READER_NP .
+But see BUGS.
+.TP
+.B PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP
+Setting the lock kind to this
avoids writer starvation as long as any read locking is not done in a
recursive fashion.
-
+.PP
The
.BR pthread_rwlockattr_getkind_np ()
-function
-returns the value of the read-write lock attribute of the
-thread read-write lock attribute object referred to by
+function returns the value of the lock kind attribute of the
+read-write lock attribute object referred to by
.IR attr
in the pointer
.IR pref .
.SH RETURN VALUE
-On success, these functions return 0;
-on error,
+On success, these functions return 0.
+Given valid pointer arguments,
+.BR pthread_rwlockattr_getkind_np ()
+always succeeds.
+On error,
.BR pthread_rwlockattr_setkind_np ()
returns a non-zero error number.
.SH ERRORS
.TP
.BR EINVAL
.I pref
-is set to an unsupported value.
+specifies an unsupported value.
.SH BUGS
Setting the value read-write lock kind to
-.IR PTHREAD_RWLOCK_PREFER_WRITER_NP ,
+.BR PTHREAD_RWLOCK_PREFER_WRITER_NP
results in the same behavior as setting the value to
-.IR PTHREAD_RWLOCK_PREFER_READER_NP .
-As long as a reader thread holds the lock the thread holding a
-write lock will be starved. Setting the kind value to
-.IR PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP ,
-allows the writer to run. However, the writer may not be
-recursive as is implied by the name. See
-http://sourceware.org/bugzilla/show_bug.cgi?id=7057
+.BR PTHREAD_RWLOCK_PREFER_READER_NP .
+As long as a reader thread holds the lock, the thread holding a
+write lock will be starved.
+Setting the lock kind to
+.BR PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP
+allows writers to run, but, as the name implies a writer
+may not lock recursively.
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=7057
+.SH VERSIONS
+The
+.BR pthread_rwlockattr_getkind_np ()
+and
+.BR pthread_rwlockattr_setkind_np ()
+functions first appeared in glibc 2.1.
.SH CONFORMING TO
These functions are non-standard GNU extensions;
hence the suffix "_np" (non-portable) in the names.