Sort sections in various manual pages.
[dragonfly.git] / lib / libc / sys / pselect.2
CommitLineData
ae7cb1b5
NT
1.\"
2.\" Copyright 2002 Massachusetts Institute of Technology
3.\"
4.\" Permission to use, copy, modify, and distribute this software and
5.\" its documentation for any purpose and without fee is hereby
6.\" granted, provided that both the above copyright notice and this
7.\" permission notice appear in all copies, that both the above
8.\" copyright notice and this permission notice appear in all
9.\" supporting documentation, and that the name of M.I.T. not be used
10.\" in advertising or publicity pertaining to distribution of the
11.\" software without specific, written prior permission. M.I.T. makes
12.\" no representations about the suitability of this software for any
13.\" purpose. It is provided "as is" without express or implied
14.\" warranty.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
17.\" ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
18.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
20.\" SHALL M.I.T. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27.\" SUCH DAMAGE.
28.\"
2aedbc49 29.\" $DragonFly: src/lib/libc/sys/pselect.2,v 1.2 2008/01/12 07:09:41 swildner Exp $
ae7cb1b5
NT
30.\"
31.Dd December 24, 2007
32.Dt PSELECT 2
33.Os
34.Sh NAME
35.Nm pselect
36.Nd synchronous I/O multiplexing a la POSIX.1g
37.Sh LIBRARY
38.Lb libc
39.Sh SYNOPSIS
40.In sys/select.h
41.Ft int
42.Fo pselect
43.Fa "int nfds"
44.Fa "fd_set * restrict readfds"
45.Fa "fd_set * restrict writefds"
46.Fa "fd_set * restrict exceptfds"
47.Fa "const struct timespec * restrict timeout"
48.Fa "const sigset_t * restrict newsigmask"
49.Fc
50.Sh DESCRIPTION
51The
52.Fn pselect
53function was introduced by
54.St -p1003.1g-2000
55as a slightly stronger version of
56.Xr select 2 .
57The
58.Fa nfds , readfds , writefds ,
59and
60.Fa exceptfds
61arguments are all identical to the analogous arguments of
62.Fn select .
63The
64.Fa timeout
65argument in
66.Fn pselect
67points to a
68.Vt "const struct timespec"
69rather than the (modifiable)
70.Vt "struct timeval"
71used by
72.Fn select ;
73as in
74.Fn select ,
75a null pointer may be passed to indicate that
76.Fn pselect
77should wait indefinitely.
78Finally,
79.Fa newsigmask
80specifies a signal mask which is set while waiting for input.
81When
82.Fn pselect
83returns, the original signal mask is restored.
84.Pp
85See
86.Xr select 2
87for a more detailed discussion of the semantics of this interface, and
88for macros used to manipulate the
89.Vt "fd_set"
90data type.
91.Sh RETURN VALUES
92The
93.Fn pselect
94function returns the same values and under the same conditions as
95.Fn select .
96.Sh ERRORS
97The
98.Fn pselect
99function may fail for any of the reasons documented for
100.Xr select 2
101and (if a signal mask is provided)
102.Xr sigprocmask 2 .
103.Sh SEE ALSO
104.Xr kqueue 2 ,
105.Xr poll 2 ,
106.Xr select 2 ,
107.Xr sigprocmask 2
108.Sh STANDARDS
109The
110.Fn pselect
111function conforms to
112.St -p1003.1-2001 .
a68e0df0
SW
113.Sh HISTORY
114The
115.Fn pselect
116function first appeared in
117.Dx 1.11 .
118.Sh AUTHORS
119This manual page was originally written by
120.An Garrett Wollman Aq wollman@FreeBSD.org
121for
122.Fx
123and later modified for
124.Dx .
ae7cb1b5
NT
125.Sh BUGS
126The
127.Fn pselect
128implementation in libc_r (user multi-threading) does not mask signals, calls
129.Fn select ,
130and restores the original signal mask atomically. A calling user thread
131using
132.Fn pselect
133to block until either a signal occurs or some descriptor changes may therefore
134block forever.
135The
136.Fn pselect
137implementations in libthread_xu (kernel multi-threading) and libc
138(single-threading) operate atomically and are therefore race-free.