summaryrefslogtreecommitdiff
path: root/static/netbsd/man2/poll.2
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
commit253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch)
treeadf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man2/poll.2
parenta9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff)
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man2/poll.2')
-rw-r--r--static/netbsd/man2/poll.2303
1 files changed, 303 insertions, 0 deletions
diff --git a/static/netbsd/man2/poll.2 b/static/netbsd/man2/poll.2
new file mode 100644
index 00000000..93c2b5ae
--- /dev/null
+++ b/static/netbsd/man2/poll.2
@@ -0,0 +1,303 @@
+.\" $NetBSD: poll.2,v 1.38 2023/07/07 01:31:25 riastradh Exp $
+.\"
+.\" Copyright (c) 1998, 2005, 2020 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Charles M. Hannum.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd February 8, 2021
+.Dt POLL 2
+.Os
+.Sh NAME
+.Nm poll, pollts, ppoll
+.Nd synchronous I/O multiplexing
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.In poll.h
+.Ft int
+.Fn poll "struct pollfd *fds" "nfds_t nfds" "int timeout"
+.In poll.h
+.In signal.h
+.In time.h
+.Ft int
+.Fn pollts "struct pollfd * restrict fds" "nfds_t nfds" "const struct timespec * restrict ts" "const sigset_t * restrict sigmask"
+.In poll.h
+.In signal.h
+.In time.h
+.Ft int
+.Fn ppoll "struct pollfd * restrict fds" "nfds_t nfds" "const struct timespec * restrict ts" "const sigset_t * restrict sigmask"
+.Sh DESCRIPTION
+.Fn poll ,
+.Fn pollts
+and
+.Fn ppoll
+examine a set of file descriptors to see if some of them are ready for
+I/O.
+For each object inspected, the caller provides a list of conditions
+(called ``events'') to check for, and the kernel returns a list of
+conditions that are true.
+The intent, as with
+.Xr select 2 ,
+is to check for whether I/O is possible before performing any, so as
+to permit a top-level event loop to process input from many sources
+(and output to many destinations)
+without blocking on any of them and thus becoming stuck.
+.Ss Arguments
+The
+.Fa fds
+argument is a pointer to an array of pollfd structures, one per file
+to inspect, as defined in
+.In poll.h
+(shown below).
+The
+.Fa nfds
+argument gives the size of the
+.Fa fds
+array.
+.Pp
+If
+.Fa timeout
+is neither zero nor INFTIM (\-1), it specifies a maximum interval to
+wait for any file descriptor to become ready, in milliseconds.
+If
+.Fa timeout
+is INFTIM (\-1), then
+.Fn poll
+blocks indefinitely.
+If
+.Fa timeout
+is zero, then
+.Fn poll
+will return without blocking.
+.Pp
+Similarly, if
+.Fa ts
+is not a null pointer, it references a timespec structure which specifies a
+maximum interval to wait for any file descriptor to become ready.
+If
+.Fa ts
+is a null pointer,
+.Fn pollts
+and
+.Fn ppoll
+block indefinitely.
+If
+.Fa ts
+is not a null pointer, referencing a zero-valued timespec structure, then
+.Fn pollts
+and
+.Fn ppoll
+will return without blocking.
+.Pp
+If
+.Fa sigmask
+is not a null pointer, then the
+.Fn pollts
+and
+.Fn ppoll
+functions replace the signal mask of the caller by the set of
+signals pointed to by
+.Fa sigmask
+while the call is in progress, and restore the caller's original
+signal mask before returning.
+.Pp
+The
+.Vt pollfd
+structure:
+.Bd -literal
+struct pollfd {
+ int fd; /* file descriptor */
+ short events; /* events to look for */
+ short revents; /* events returned */
+};
+.Ed
+.\" without this Pp there is no blank line after the struct which is ugly
+.Pp
+The fields of
+.Fa struct pollfd
+are as follows:
+.Pp
+.Bl -tag -width XXXrevents -compact
+.It Fa fd
+File descriptor to poll.
+(Input)
+.It Fa events
+Conditions to poll for.
+(Input)
+.It Fa revents
+Conditions that are true.
+(Output)
+.El
+.Ss Conditions
+There are four conditions that can be placed in
+.Fa events
+and reported in
+.Fa revents :
+.Pp
+.Bl -tag -width XXXPOLLWRNORM -compact
+.It POLLRDNORM
+Normal data may be read without blocking.
+.It POLLRDBAND
+Urgent/out-of-band data may be read without blocking.
+.It POLLWRNORM
+Normal data may be written without blocking.
+.It POLLWRBAND
+Urgent/out-of-band data may be written without blocking.
+.El
+.Pp
+There are three more conditions that are always checked for regardless
+of
+.Fa events
+and thus may always be reported in
+.Fa revents :
+.Pp
+.Bl -tag -width XXXPOLLWRNORM -compact
+.It POLLERR
+An exceptional condition has occurred on the object.
+.It POLLHUP
+The object has been disconnected.
+.It POLLNVAL
+The file descriptor is not open.
+.El
+.Pp
+The following additional flags are defined:
+.Pp
+.Bl -tag -width XXXPOLLWRNORM -compact
+.It POLLIN
+Synonym for POLLRDNORM.
+.It POLLOUT
+Synonym for POLLWRNORM.
+.It POLLPRI
+Synonym for POLLRDBAND.
+.El
+.Ss Notes
+If the value passed in
+.Fa fd
+is negative, the entry is ignored and
+.Fa revents
+is set to 0.
+(POLLNVAL is
+.Em not
+set.)
+.Pp
+No file descriptor will ever produce POLLHUP at the same time as POLLWRNORM.
+.\" (XXX but what about POLLWRBAND? POLLRDBAND? POLLRDNORM?)
+.Pp
+Sockets produce POLLIN rather than POLLHUP when the remote
+end is closed.
+.Sh RETURN VALUES
+.Fn poll
+returns the number of descriptors that are ready for I/O, or returns
+\-1 and sets
+.Dv errno
+if an error occurred.
+If the time limit expires,
+.Fn poll
+returns 0.
+If
+.Fn poll
+returns with an error,
+including one due to an interrupted call,
+the
+.Fa fds
+array will be unmodified.
+.Sh COMPATIBILITY
+This implementation differs from the historical one in that no individual
+file descriptor may cause
+.Fn poll
+to return with an error.
+In cases where this would have happened in the historical implementation
+(e.g. trying to poll a
+.Xr revoke 2 Ns d
+descriptor), this implementation instead copies the
+.Fa events
+bitmask to the
+.Fa revents
+bitmask.
+Attempting to perform I/O on this descriptor will then return an error.
+This behavior is believed to be more useful.
+.Pp
+The
+.Fn ppoll
+function is a wrapper for
+.Fn pollts
+to provide compatibility with the Linux implementation.
+.Sh ERRORS
+An error return from
+.Fn poll
+indicates:
+.Bl -tag -width Er
+.It Bq Er EFAULT
+.Fa fds
+points outside the process's allocated address space.
+.It Bq Er EINTR
+A signal was delivered before the time limit expired and
+before any of the selected events occurred.
+.It Bq Er EINVAL
+The specified time limit is negative or
+the number of pollfd structures specified is larger than the current
+file descriptor resource limit.
+.El
+.Sh SEE ALSO
+.Xr accept 2 ,
+.Xr connect 2 ,
+.Xr read 2 ,
+.Xr recv 2 ,
+.Xr select 2 ,
+.Xr send 2 ,
+.Xr write 2
+.Sh HISTORY
+The
+.Fn poll
+function appeared in
+.At V.3 ,
+and was added to
+.Nx
+in
+.Nx 1.3 .
+The
+.Fn pollts
+function first appeared in
+.Nx 3.0 .
+The
+.Fn ppoll
+function first appeared in
+.Nx 10.0 .
+.Sh BUGS
+As of this writing, in the underlying implementation, POLLIN and
+POLLPRI are distinct flags from POLLRDNORM and POLLRDBAND
+(respectively) and the behavior is not always exactly identical.
+.Pp
+The detailed behavior of specific flags is not very portable from one
+OS to another.
+.\" The old note, which is too vague to be helpful:
+.\"
+.\" The distinction between some of the fields in the
+.\" .Fa events
+.\" and
+.\" .Fa revents
+.\" bitmasks is really not useful without STREAMS.
+.\" The fields are defined for compatibility with existing software.