xref: /xnu-8020.121.3/bsd/man/man2/poll.2 (revision fdd8201d7b966f0c3ea610489d29bd841d358941)
1*fdd8201dSApple OSS Distributions.\"
2*fdd8201dSApple OSS Distributions.\" Copyright (c) 2005 Apple Computer, Inc. All rights reserved.
3*fdd8201dSApple OSS Distributions.\"
4*fdd8201dSApple OSS Distributions.\" @APPLE_LICENSE_HEADER_START@
5*fdd8201dSApple OSS Distributions.\"
6*fdd8201dSApple OSS Distributions.\" This file contains Original Code and/or Modifications of Original Code
7*fdd8201dSApple OSS Distributions.\" as defined in and that are subject to the Apple Public Source License
8*fdd8201dSApple OSS Distributions.\" Version 2.0 (the 'License'). You may not use this file except in
9*fdd8201dSApple OSS Distributions.\" compliance with the License. Please obtain a copy of the License at
10*fdd8201dSApple OSS Distributions.\" http://www.opensource.apple.com/apsl/ and read it before using this
11*fdd8201dSApple OSS Distributions.\" file.
12*fdd8201dSApple OSS Distributions.\"
13*fdd8201dSApple OSS Distributions.\" The Original Code and all software distributed under the License are
14*fdd8201dSApple OSS Distributions.\" distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15*fdd8201dSApple OSS Distributions.\" EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16*fdd8201dSApple OSS Distributions.\" INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17*fdd8201dSApple OSS Distributions.\" FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18*fdd8201dSApple OSS Distributions.\" Please see the License for the specific language governing rights and
19*fdd8201dSApple OSS Distributions.\" limitations under the License.
20*fdd8201dSApple OSS Distributions.\"
21*fdd8201dSApple OSS Distributions.\" @APPLE_LICENSE_HEADER_END@
22*fdd8201dSApple OSS Distributions.\"
23*fdd8201dSApple OSS Distributions.\"
24*fdd8201dSApple OSS Distributions.\" Copyright (c) 1996 Charles M. Hannum.  All rights reserved.
25*fdd8201dSApple OSS Distributions.\"
26*fdd8201dSApple OSS Distributions.\" Redistribution and use in source and binary forms, with or without
27*fdd8201dSApple OSS Distributions.\" modification, are permitted provided that the following conditions
28*fdd8201dSApple OSS Distributions.\" are met:
29*fdd8201dSApple OSS Distributions.\" 1. Redistributions of source code must retain the above copyright
30*fdd8201dSApple OSS Distributions.\"    notice, this list of conditions and the following disclaimer.
31*fdd8201dSApple OSS Distributions.\" 2. Redistributions in binary form must reproduce the above copyright
32*fdd8201dSApple OSS Distributions.\"    notice, this list of conditions and the following disclaimer in the
33*fdd8201dSApple OSS Distributions.\"    documentation and/or other materials provided with the distribution.
34*fdd8201dSApple OSS Distributions.\" 3. All advertising materials mentioning features or use of this software
35*fdd8201dSApple OSS Distributions.\"    must display the following acknowledgement:
36*fdd8201dSApple OSS Distributions.\"	This product includes software developed by Charles M. Hannum.
37*fdd8201dSApple OSS Distributions.\" 4. The name of the author may not be used to endorse or promote products
38*fdd8201dSApple OSS Distributions.\"    derived from this software without specific prior written permission.
39*fdd8201dSApple OSS Distributions.\"
40*fdd8201dSApple OSS Distributions.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
41*fdd8201dSApple OSS Distributions.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42*fdd8201dSApple OSS Distributions.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
43*fdd8201dSApple OSS Distributions.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
44*fdd8201dSApple OSS Distributions.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45*fdd8201dSApple OSS Distributions.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
46*fdd8201dSApple OSS Distributions.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
47*fdd8201dSApple OSS Distributions.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
48*fdd8201dSApple OSS Distributions.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
49*fdd8201dSApple OSS Distributions.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50*fdd8201dSApple OSS Distributions.\"
51*fdd8201dSApple OSS Distributions.Dd March 18, 2015
52*fdd8201dSApple OSS Distributions.Dt POLL 2
53*fdd8201dSApple OSS Distributions.Os
54*fdd8201dSApple OSS Distributions.Sh NAME
55*fdd8201dSApple OSS Distributions.Nm poll
56*fdd8201dSApple OSS Distributions.Nd synchronous I/O multiplexing
57*fdd8201dSApple OSS Distributions.Sh SYNOPSIS
58*fdd8201dSApple OSS Distributions.In poll.h
59*fdd8201dSApple OSS Distributions.Ft int
60*fdd8201dSApple OSS Distributions.Fo poll
61*fdd8201dSApple OSS Distributions.Fa "struct pollfd fds[]"
62*fdd8201dSApple OSS Distributions.Fa "nfds_t nfds"
63*fdd8201dSApple OSS Distributions.Fa "int timeout"
64*fdd8201dSApple OSS Distributions.Fc
65*fdd8201dSApple OSS Distributions.Sh DESCRIPTION
66*fdd8201dSApple OSS Distributions.Fn poll
67*fdd8201dSApple OSS Distributionsexamines a set of file descriptors
68*fdd8201dSApple OSS Distributionsto see if some of them are ready for I/O
69*fdd8201dSApple OSS Distributionsor if certain events have occurred on them.
70*fdd8201dSApple OSS DistributionsThe
71*fdd8201dSApple OSS Distributions.Fa fds
72*fdd8201dSApple OSS Distributionsargument is a pointer to an array of pollfd structures,
73*fdd8201dSApple OSS Distributionsas defined in
74*fdd8201dSApple OSS Distributions.Aq Pa poll.h
75*fdd8201dSApple OSS Distributions(shown below).  The
76*fdd8201dSApple OSS Distributions.Fa nfds
77*fdd8201dSApple OSS Distributionsargument specifies the size of the
78*fdd8201dSApple OSS Distributions.Fa fds
79*fdd8201dSApple OSS Distributionsarray.
80*fdd8201dSApple OSS Distributions.Bd -literal
81*fdd8201dSApple OSS Distributionsstruct pollfd {
82*fdd8201dSApple OSS Distributions    int    fd;       /* file descriptor */
83*fdd8201dSApple OSS Distributions    short  events;   /* events to look for */
84*fdd8201dSApple OSS Distributions    short  revents;  /* events returned */
85*fdd8201dSApple OSS Distributions};
86*fdd8201dSApple OSS Distributions.Ed
87*fdd8201dSApple OSS Distributions.Pp
88*fdd8201dSApple OSS DistributionsThe fields of
89*fdd8201dSApple OSS Distributions.Fa struct pollfd
90*fdd8201dSApple OSS Distributionsare as follows:
91*fdd8201dSApple OSS Distributions.Bl -tag -width XXXPOLLWRNORM
92*fdd8201dSApple OSS Distributions.It fd
93*fdd8201dSApple OSS DistributionsFile descriptor to poll.
94*fdd8201dSApple OSS Distributions.It events
95*fdd8201dSApple OSS DistributionsEvents to poll for.  (See below.)
96*fdd8201dSApple OSS Distributions.It revents
97*fdd8201dSApple OSS DistributionsEvents which may occur or have occurred.  (See below.)
98*fdd8201dSApple OSS Distributions.El
99*fdd8201dSApple OSS Distributions.Pp
100*fdd8201dSApple OSS DistributionsThe event bitmasks in
101*fdd8201dSApple OSS Distributions.Fa events
102*fdd8201dSApple OSS Distributionsand
103*fdd8201dSApple OSS Distributions.Fa revents
104*fdd8201dSApple OSS Distributionshave the following bits:
105*fdd8201dSApple OSS Distributions.Bl -tag -width XXXPOLLWRNORM
106*fdd8201dSApple OSS Distributions.\" ===========
107*fdd8201dSApple OSS Distributions.It POLLERR
108*fdd8201dSApple OSS DistributionsAn exceptional condition has occurred on the device or socket.
109*fdd8201dSApple OSS DistributionsThis flag is output only, and ignored if present in the input
110*fdd8201dSApple OSS Distributions.Fa events
111*fdd8201dSApple OSS Distributionsbitmask.
112*fdd8201dSApple OSS Distributions.\" ===========
113*fdd8201dSApple OSS Distributions.It POLLHUP
114*fdd8201dSApple OSS DistributionsThe device or socket has been disconnected.
115*fdd8201dSApple OSS DistributionsThis flag is output only,
116*fdd8201dSApple OSS Distributionsand ignored if present in the input
117*fdd8201dSApple OSS Distributions.Fa events
118*fdd8201dSApple OSS Distributionsbitmask.
119*fdd8201dSApple OSS DistributionsNote that POLLHUP and POLLOUT
120*fdd8201dSApple OSS Distributionsare mutually exclusive and should never be present in the
121*fdd8201dSApple OSS Distributions.Fa revents
122*fdd8201dSApple OSS Distributionsbitmask at the same time.
123*fdd8201dSApple OSS Distributions.\" ===========
124*fdd8201dSApple OSS Distributions.It POLLIN
125*fdd8201dSApple OSS DistributionsData other than high priority data may be read without blocking.
126*fdd8201dSApple OSS DistributionsThis is equivalent to ( POLLRDNORM | POLLRDBAND ).
127*fdd8201dSApple OSS Distributions.\" ===========
128*fdd8201dSApple OSS Distributions.It POLLNVAL
129*fdd8201dSApple OSS DistributionsThe file descriptor is not open.
130*fdd8201dSApple OSS DistributionsThis flag is output only, and ignored if present in the input
131*fdd8201dSApple OSS Distributions.Fa events
132*fdd8201dSApple OSS Distributionsbitmask.
133*fdd8201dSApple OSS Distributions.\" ===========
134*fdd8201dSApple OSS Distributions.It POLLOUT
135*fdd8201dSApple OSS DistributionsNormal data may be written without blocking.
136*fdd8201dSApple OSS DistributionsThis is equivalent to POLLWRNORM.
137*fdd8201dSApple OSS Distributions.\" ===========
138*fdd8201dSApple OSS Distributions.It POLLPRI
139*fdd8201dSApple OSS DistributionsHigh priority data may be read without blocking.
140*fdd8201dSApple OSS Distributions.\" ===========
141*fdd8201dSApple OSS Distributions.It POLLRDBAND
142*fdd8201dSApple OSS DistributionsPriority data may be read without blocking.
143*fdd8201dSApple OSS Distributions.\" ===========
144*fdd8201dSApple OSS Distributions.It POLLRDNORM
145*fdd8201dSApple OSS DistributionsNormal data may be read without blocking.
146*fdd8201dSApple OSS Distributions.\" ===========
147*fdd8201dSApple OSS Distributions.It POLLWRBAND
148*fdd8201dSApple OSS DistributionsPriority data may be written without blocking.
149*fdd8201dSApple OSS Distributions.\" ===========
150*fdd8201dSApple OSS Distributions.It POLLWRNORM
151*fdd8201dSApple OSS DistributionsNormal data may be written without blocking.
152*fdd8201dSApple OSS Distributions.El
153*fdd8201dSApple OSS Distributions.Pp
154*fdd8201dSApple OSS DistributionsThe distinction between normal, priority, and high-priority data
155*fdd8201dSApple OSS Distributionsis specific to particular file types or devices.
156*fdd8201dSApple OSS Distributions.Pp
157*fdd8201dSApple OSS DistributionsIf
158*fdd8201dSApple OSS Distributions.Fa timeout
159*fdd8201dSApple OSS Distributionsis greater than zero,
160*fdd8201dSApple OSS Distributionsit specifies a maximum interval (in milliseconds)
161*fdd8201dSApple OSS Distributionsto wait for any file descriptor to become ready.
162*fdd8201dSApple OSS DistributionsIf
163*fdd8201dSApple OSS Distributions.Fa timeout
164*fdd8201dSApple OSS Distributionsis zero, then
165*fdd8201dSApple OSS Distributions.Fn poll
166*fdd8201dSApple OSS Distributionswill return without blocking. If the value of
167*fdd8201dSApple OSS Distributions.Fa timeout
168*fdd8201dSApple OSS Distributionsis -1, the poll blocks indefinitely.
169*fdd8201dSApple OSS Distributions.Sh RETURN VALUES
170*fdd8201dSApple OSS Distributions.Fn poll
171*fdd8201dSApple OSS Distributionsreturns the number of descriptors that are ready for I/O,
172*fdd8201dSApple OSS Distributionsor -1 if an error occurred.
173*fdd8201dSApple OSS DistributionsIf the time limit expires,
174*fdd8201dSApple OSS Distributions.Fn poll
175*fdd8201dSApple OSS Distributionsreturns 0.
176*fdd8201dSApple OSS DistributionsIf
177*fdd8201dSApple OSS Distributions.Fn poll
178*fdd8201dSApple OSS Distributionsreturns with an error,
179*fdd8201dSApple OSS Distributionsincluding one due to an interrupted call,
180*fdd8201dSApple OSS Distributionsthe
181*fdd8201dSApple OSS Distributions.Fa fds
182*fdd8201dSApple OSS Distributionsarray will be unmodified and the global variable
183*fdd8201dSApple OSS Distributions.Va errno
184*fdd8201dSApple OSS Distributionswill be set to indicate the error.
185*fdd8201dSApple OSS Distributions.Sh ERRORS
186*fdd8201dSApple OSS Distributions.Fn poll
187*fdd8201dSApple OSS Distributionswill fail if:
188*fdd8201dSApple OSS Distributions.Bl -tag -width Er
189*fdd8201dSApple OSS Distributions.\" ===========
190*fdd8201dSApple OSS Distributions.It Bq Er EAGAIN
191*fdd8201dSApple OSS DistributionsAllocation of internal data structures fails.
192*fdd8201dSApple OSS DistributionsA subsequent request may succeed.
193*fdd8201dSApple OSS Distributions.\" ===========
194*fdd8201dSApple OSS Distributions.It Bq Er EFAULT
195*fdd8201dSApple OSS Distributions.Fa Fds
196*fdd8201dSApple OSS Distributionspoints outside the process's allocated address space.
197*fdd8201dSApple OSS Distributions.\" ===========
198*fdd8201dSApple OSS Distributions.It Bq Er EINTR
199*fdd8201dSApple OSS DistributionsA signal is delivered before the time limit expires
200*fdd8201dSApple OSS Distributionsand before any of the selected events occurs.
201*fdd8201dSApple OSS Distributions.\" ===========
202*fdd8201dSApple OSS Distributions.It Bq Er EINVAL
203*fdd8201dSApple OSS DistributionsThe
204*fdd8201dSApple OSS Distributions.Fa nfds
205*fdd8201dSApple OSS Distributionsargument is greater than OPEN_MAX or the
206*fdd8201dSApple OSS Distributions.Fa timeout
207*fdd8201dSApple OSS Distributionsargument is less than -1.
208*fdd8201dSApple OSS Distributions.El
209*fdd8201dSApple OSS Distributions.Sh BUGS
210*fdd8201dSApple OSS DistributionsThe
211*fdd8201dSApple OSS Distributions.Fn poll
212*fdd8201dSApple OSS Distributionssystem call currently does not support devices.
213*fdd8201dSApple OSS Distributions.Sh SEE ALSO
214*fdd8201dSApple OSS Distributions.Xr accept 2 ,
215*fdd8201dSApple OSS Distributions.Xr connect 2 ,
216*fdd8201dSApple OSS Distributions.Xr connectx 2 ,
217*fdd8201dSApple OSS Distributions.Xr kevent 2 ,
218*fdd8201dSApple OSS Distributions.Xr read 2 ,
219*fdd8201dSApple OSS Distributions.Xr recv 2 ,
220*fdd8201dSApple OSS Distributions.Xr select 2 ,
221*fdd8201dSApple OSS Distributions.Xr send 2 ,
222*fdd8201dSApple OSS Distributions.Xr write 2
223*fdd8201dSApple OSS Distributions.Sh HISTORY
224*fdd8201dSApple OSS DistributionsThe
225*fdd8201dSApple OSS Distributions.Fn poll
226*fdd8201dSApple OSS Distributionsfunction call appeared in
227*fdd8201dSApple OSS Distributions.At V .
228