poll(2) DG/UX 5.4R3.00 poll(2)
NAME
poll - input/output multiplexing
SYNOPSIS
#include <poll.h>
#include <stropts.h>
int poll (polldescriptorarray, arraysize, timeout)
struct pollfd polldescriptorarray[];
unsigned long arraysize;
int timeout;
where:
polldescriptorarray An array of pollfd structures describing the
files and conditions to be checked. On output,
the conditions that are actually true are
filled in.
arraysize The number of entries in the array
timeout A value specifying the timeout interval
DESCRIPTION
poll provides users with a mechanism for multiplexing input/output
over a set of file descriptors that reference open files. poll
identifies those files on which a user can read or write data, or on
which certain events have occurred.
polldescriptorarray specifies the file descriptors to be examined
and the events of interest for each file descriptor. It is a pointer
to an array with one element for each open file descriptor of
interest. The array's elements are pollfd structures, which contain
the following members:
fd A file descriptor to an open file.
events A flag word describing the conditions for which the stream
is being checked.
revents Ignored on input. On output, this flag word reports the
conditions that have been true at some time since the start
of the system call.
fd specifies an open file descriptor and events and revents are
bitmasks constructed by an OR of any combination of the following
event flags:
POLLIN Data other than high priority data may be read
without blocking. For STREAMS, this flag is
set even if the message is of zero length.
POLLRDNORM Normal data (priority band = 0) may be read
without blocking. For STREAMS, this flag is
set even if the message is of zero length.
Licensed material--property of copyright holder(s) 1
poll(2) DG/UX 5.4R3.00 poll(2)
POLLRDBAND Data from a non-zero priority band may be read
without blocking. For STREAMS, this flag is
set even if the message is of zero length.
POLLPRI High priority data may be received without
blocking. For STREAMS, this flag is set even if
the message is of zero length.
POLLOUT Normal data may be written without blocking.
POLLWRNORM The same as POLLOUT.
POLLWRBAND Priority data (priority band > 0) may be
written. This event only examines bands that
have been written to at least once.
POLLMSG An MSIG or MPCSIG message containing the
SIGPOLL signal has reached the front of the
stream head read queue.
POLLERR An error has occurred on the device or stream.
This flag is only valid in the revents bitmask;
it is not used in the events field.
POLLHUP A hangup has occurred on the stream. This
event and POLLOUT are mutually exclusive; a
stream can never be writable if a hangup has
occurred. However, this event and POLLIN,
POLLRDNORM, POLLRDBAND, or POLLPRI are not
mutually exclusive. This flag is only valid in
the revents bitmask; it is not used in the
events field.
POLLNVAL The specified fd value does not belong to an
open file. This flag is only valid in the
revents field; it is not used in the events
field.
For each element of the array pointed to by polldescriptorarray,
poll examines the given file descriptor for the event(s) specified in
events. The number of file descriptors to be examined is specified
by arraysize.
If the value fd is less than zero, events is ignored and revents is
set to 0 in that entry on return from poll .
The results of the poll query are stored in the revents field in the
pollfd structure. Bits are set in the revents bitmask to indicate
which of the requested events are true. If none are true, none of
the specified bits are set in revents when the poll call returns.
The event flags POLLHUP, POLLERR, and POLLNVAL are always set in
revents if the conditions they indicate are true; this occurs even
though these flags were not present in events. Note that the
remaining conditions are not guaranteed to be true when the system
Licensed material--property of copyright holder(s) 2
poll(2) DG/UX 5.4R3.00 poll(2)
call returns. All of those conditions that have been true since the
start of the call are reported.
If none of the defined events have occurred on any selected file
descriptor, poll waits at least timeout milliseconds for an event to
occur on any of the selected file descriptors. If the value timeout
is 0, poll returns immediately. If the value of timeout is INFTIM
(or -1), poll blocks until a requested event occurs or until the call
is interrupted. poll is not affected by the ONDELAY and ONONBLOCK
flags. Poll does not wait for the full timeout interval to elapse if
one of the reportable conditions becomes true.
ACCESS CONTROL
None.
RETURN VALUE
0 Poll timed out and none of the reportable conditions
are true on the streams of interest.
1 ... arraysize
The number of streams for which one or more conditions
are reported.
-1 The poll failed. errno indicates the error.
DIAGNOSTICS
Errno may be set to one of the following error codes:
EAGAIN Memory was not available to do the poll.
EFAULT The poll descriptor array did not lie entirely within the
caller's readable and writable address space.
EINTR A signal was caught during the poll call.
EINVAL arraysize is less than zero or greater than the configured
number of file descriptors.
SEE ALSO
getmsg(2), putmsg(2), select(2).
Licensed material--property of copyright holder(s) 3