IPB
>  Man Pages > Linux > Suse Linux 10.1 > Section 2 > poll man page

poll man page

Section 2 - Suse Linux 10.1 Man Pages

Other operating system man pages available here


Advanced Search

Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!


POLL(2)                    Linux Programmer's Manual                   POLL(2)




NAME

       poll, ppoll - wait for some event on a file descriptor


SYNOPSIS

       #include <sys/poll.h>

       int poll(struct pollfd *fds, nfds_t nfds, int timeout);

       #define _GNU_SOURCE
       #include <sys/poll.h>

       int ppoll(struct pollfd *fds, nfds_t nfds,
               const struct timespec *timeout, const sigset_t *sigmask);


DESCRIPTION

       poll()  performs a similar task to select(2): it waits for one of a set
       of file descriptors to become ready to perform I/O.

       The set of file descriptors to be monitored is  specified  in  the  fds
       argument, which is an array of nfds structures of the following form:

           struct pollfd {
               int   fd;         /* file descriptor */
               short events;     /* requested events */
               short revents;    /* returned events */
           };

       The  field  fd  contains a file descriptor for an open file.  The field
       events is an input parameter,  a  bitmask  specifying  the  events  the
       application  is  interested in.  The field revents is an output parame-
       ter, filled by the kernel with the events that actually occurred.   The
       bits  returned in revents can include any of those specified in events,
       or one of the values POLLERR, 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, then poll() blocks until one of the  events  occurs.   The
       bits  that  may  be  set/returned  in events and revents 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 (output only) */
           #define POLLHUP     0x0010    /* Hung up (output only) */
           #define POLLNVAL    0x0020    /* Invalid request: fd not open
                                            (output only) */

       When compiling XPG4.2 source one also has:

           #ifdef _XOPEN_SOURCE
           #define POLLRDNORM  0x0040    /* Normal data may be read */
           #define POLLRDBAND  0x0080    /* Priority data may be read */
           #define POLLWRNORM  0x0100    /* Writing now will not block */
           #define POLLWRBAND  0x0200    /* Priority data may be written */
           #endif

       Finally, Linux knows about:

           #ifdef _GNU_SOURCE
           #define POLLMSG     0x0400
           #endif

       The timeout argument specifies an upper limit on  the  time  for  which
       poll()  will  block,  in  milliseconds.  Specifying a negative value in
       timeout means an infinite timeout.

   ppoll()
       The relationship between poll() and ppoll() is analogous to  the  rela-
       tionship between select() and pselect(): like pselect(), ppoll() allows
       an application to safely wait until either a  file  descriptor  becomes
       ready or until a signal is caught.

       Other  than  the  difference  in  the  timeout  argument, the following
       ppoll() call:

           ready = ppoll(&fds, nfds, timeout, &sigmask);

       is equivalent to atomically executing the following calls:

           sigset_t origmask;

           sigprocmask(SIG_SETMASK, &sigmask, &origmask);
           ready = ppoll(&fds, nfds, timeout);
           sigprocmask(SIG_SETMASK, &origmask, NULL);

       See the description of pselect(2) for an explanation of why ppoll()  is
       necessary.

       The  timeout  argument  specifies  an upper limit on the amount of time
       that ppoll() will block.  This argument is a pointer to a structure  of
       the following form:

         struct timespec {
             long    tv_sec;         /* seconds */
             long    tv_nsec;        /* nanoseconds */
         };

       If timeout is specified as NULL, then ppoll() can block indefinitely.


RETURN VALUE

       On success, a positive number is returned; this is the number of struc-
       tures 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 were ready.  On  error,
       -1 is returned, and errno is set appropriately.


ERRORS

       EBADF  An invalid file descriptor was given in one of the sets.

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

       EINTR  A signal occurred before any requested event.

       EINVAL The nfds value exceeds the RLIMIT_NOFILE value.

       ENOMEM There was no space to allocate file descriptor tables.


LINUX NOTES

       The Linux ppoll() system call modifies its timeout argument.   However,
       the  glibc wrapper function hides this behaviour by using a local vari-
       able for the timeout argument that is passed to the system call.  Thus,
       the glibc ppoll() function does not modify its timeout argument.


BUGS

       See  the  discussion of spurious readiness notifications under the BUGS
       section of select(2).


CONFORMING TO

       poll() conforms to POSIX.1-2001.  ppoll() is Linux specific.


VERSIONS

       The poll() system call was introduced  in  Linux  2.1.23.   The  poll()
       library  call  was  introduced  in  libc 5.4.28 (and provides emulation
       using select() if your kernel does not have a poll() system call).

       The ppoll() system call was added  to  Linux  in  kernel  2.6.16.   The
       ppoll() library call was added in glibc 2.4.


NOTES

       Some  implementations  define the non-standard constant INFTIM with the
       value -1 for use as a timeout.  This constant is not provided in glibc.


SEE ALSO

       select(2), select_tut(2)



Linux 2.6.16                      2006-03-13                           POLL(2)


Man(1) output converted with man2html and wrapped by fishsponge

This page was generated on Tue Feb 13 02:17:35 GMT 2007

Your favourite pages:

No pages logged yet.
Trying to save cookie...

Top 10 most popular pages:

sqlite3 man page (5323 hits)
(openSUSE 10.2)

svn man page (5171 hits)
(FreeBSD 6.2)

adv_cap_autoneg man page (4865 hits)
(Solaris 10 11_06)

CPAN man page (4602 hits)
(Suse Linux 10.1)

ssh man page (4337 hits)
(Suse Linux 10.1)

ssh-socks5-proxy-connect man page (2841 hits)
(Solaris 10 11_06)

netcat man page (2688 hits)
(Suse Linux 10.1)

pprosetup man page (2472 hits)
(Solaris 10 11_06)

startproc man page (2452 hits)
(Suse Linux 10.1)

signal man page (2393 hits)
(Suse Linux 10.1)

Useful Links

Go Back

Visitor Statistics


Valid XHTML 1.0 Transitional     Valid CSS!

Partners: Cambridge Plus :: PYRENEES Winter Activities :: Microprocessor Circuit Design :: <Link Available>
Unix Man Pages / Linux Man Pages :: HiFi Forum :: SIP VoIP Phone & Provider Reviews :: UNIX/Linux Forum Archives

More info on advertising on Unix/Linux Forum