NAME

     poll - wait for some event on a file descriptor


SYNOPSIS

     #include <sys/poll.h>

     int poll(struct pollfd *ufds, unsigned int nfds, int timeout


DESCRIPTION

     poll is a variation on the theme of select.  It specifies an
     array of nfds structures of type
             struct pollfd {
                     int fd;           /* file descriptor */
                     short events;     /* requested events */
                     short revents;    /* returned events */
             };
     and a timeout in milliseconds. A negative value means infin-
     ite timeout.  The field fd contains a file descriptor for an
     open file.  The field events is an input parameter,  a  bit-
     mask specifying the events the application is interested in.
     The field revents is an output parameter, filled by the ker-
     nel  with  the  events that actually occurred, either of the
     type requested, or of one of the types POLLERR or POLLHUP or
     POLLNVAL.   (These  three bits are meaningless in the events
     field, and will be set in the  revents  field  whenever  the
     corresponding  condition  is  true.)   If none of the events
     requested (and no error) has occurred for any  of  the  file
     descriptors,  the  kernel waits for timeout milliseconds for
     one of these events to occur.  The following  possible  bits
     in these masks are defined in <sys/poll.h>
         #define POLLIN      0x0001    /* There is data to read */
         #define POLLPRI     0x0002    /* There is urgent data to read */
         #define POLLOUT     0x0004    /* Writing now will not block */
         #define POLLERR     0x0008    /* Error condition */
         #define POLLHUP     0x0010    /* Hung up */
         #define POLLNVAL    0x0020    /* Invalid request: fd not open */
     In <asm/poll.h>  also  the  values  POLLRDNORM,  POLLRDBAND,
     POLLWRNORM, POLLWRBAND and POLLMSG are defined.


RETURN VALUE

     On success, a positive number is returned, where the  number
     returned  is  the  number  of structures which have non-zero
     revents fields  (in  other  words,  those  descriptors  with
     events or errors reported).  A value of 0 indicates that the
     call timed out and no file descriptors have  been  selected.
     On error, -1 is returned, and errno is set appropriately.


ERRORS

     ENOMEM
          There was no space to allocate file descriptor tables.

     EFAULT
          The array given as argument was not  contained  in  the
          calling program's address space.

     EINTR
          A signal occurred before any requested event.


CONFORMING TO

     XPG4-UNIX.


AVAILABILITY

     The poll() systemcall was introduced in Linux  2.1.23.   The
     poll()  library call was introduced in libc 5.4.28 (and pro-
     vides emulation using select if your kernel does not have  a
     poll syscall).


SEE ALSO

     select(2)