| POLL(2) | System Calls Manual | POLL(2) | 
poll, pollts —
#include <poll.h>
int
  
  poll(struct
    pollfd *fds, nfds_t
    nfds, int
  timeout);
#include <poll.h>
  
  #include <signal.h>
  
  #include <time.h>
int
  
  pollts(struct
    pollfd * restrict fds,
    nfds_t nfds,
    const struct timespec *
    restrict ts, const
    sigset_t * restrict sigmask);
poll() and pollts() examine a
  set of file descriptors to see if some of them are ready for I/O. The
  fds argument is a pointer to an array of pollfd
  structures as defined in
  <poll.h> (shown below). The
  nfds argument determines the size of the
  fds array.
struct pollfd {
    int    fd;       /* file descriptor */
    short  events;   /* events to look for */
    short  revents;  /* events returned */
};
The fields of struct pollfd are as follows:
The event bitmasks in events and revents have the following bits:
poll() returns a POLLIN
      event, rather than a POLLHUP.If timeout is neither zero nor INFTIM (-1),
    it specifies a maximum interval to wait for any file descriptor to become
    ready, in milliseconds. If timeout is INFTIM (-1), the
    poll blocks indefinitely. If timeout is zero, then
    poll() will return without blocking.
If ts is a non-null pointer, it references a
    timespec structure which specifies a maximum interval to wait for any file
    descriptor to become ready. If ts is a null pointer,
    pollts() blocks indefinitely. If
    ts is a non-null pointer, referencing a zero-valued
    timespec structure, then pollts() will return
    without blocking.
If sigmask is a non-null pointer, then the
    pollts() function shall replace the signal mask of
    the caller by the set of signals pointed to by sigmask
    before examining the descriptors, and shall restore the signal mask of the
    caller before returning.
poll() returns the number of descriptors that are ready
  for I/O, or -1 if an error occurred. If the time limit expires,
  poll() returns 0. If poll()
  returns with an error, including one due to an interrupted call, the
  fds array will be unmodified.
poll() to return with an
  error. In cases where this would have happened in the historical
  implementation (e.g. trying to poll a
  revoke(2)d descriptor), this
  implementation instead copies the events bitmask to the
  revents bitmask. Attempting to perform I/O on this
  descriptor will then return an error. This behaviour is believed to be more
  useful.
poll() indicates:
EFAULT]EINTR]EINVAL]poll() function appeared in
  AT&T System V Release 3 UNIX. The
  pollts() function first appeared in
  NetBSD 3.0.
| May 5, 2019 | NetBSD 9.4 |