Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ select(3C) — svr4 — mips UMIPS RISC/os 5.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

poll(2)

read(2)

write(2)



SELECT(3C-SVR4)     RISC/os Reference Manual      SELECT(3C-SVR4)



NAME
     select - synchronous I/O multiplexing

SYNOPSIS
     #include <sys/time.h>
     #include <sys/types.h>

     select(nfds, readfds, writefds, execptfds, timeout)
     int nfds;
     fdset *readfds, *writefds, *execptfds;
     struct timeval *timeout;

     FDSET(fd, &fdset);
     FDCLR(fd, &fdset);
     FDISSET(fd, &fdset);
     FDZERO(&fdset);
     int fd;
     fdset fdset;

DESCRIPTION
     select examines the I/O descriptor sets whose addresses are
     passed in readfds, writefds, and execptfds to see if any of
     their descriptors are ready for reading, are ready for writ-
     ing, or have an exceptional condition pending, respectively.
     nfds is the number of bits to be checked in each bit mask
     that represents a file descriptor; the descriptors from 0 to
     -1 in the descriptor sets are examined.  On return, select
     replaces the given descriptor sets with subsets consisting
     of those descriptors that are ready for the requested opera-
     tion.  The return value from the call to select() is the
     number of ready descriptors.

     The descriptor sets are stored as bit fields in arrays of
     integers.  The following macros are provided for manipulat-
     ing such descriptor sets:  FD_ZERO(&fdset) initializes a
     descriptor set fdset to the null set.  FD_SET(fd, &fdset)
     includes a particular descriptor fd in fdset.  FD_CLR(fd,
     &fdset) removes fd from fdset.  FD_ISSET(fd, &fdset) is
     nonzero if fd is a member of fdset, zero otherwise.  The
     behavior of these macros is undefined if a descriptor value
     is less than zero or greater than or equal to FD_SETSIZE.
     FD_SETSIZE is a constant defined in sys/select.h and is nor-
     mally at least equal to the maximum number of descriptors
     supported by the system.

     If timeout is not a NULL pointer, it specifies a maximum
     interval to wait for the selection to complete.  If timeout
     is a NULL pointer, the select blocks indefinitely.  To
     affect a poll, the timeout argument should be a non-NULL
     pointer, pointing to a zero-valued timeval structure.





                        Printed 11/19/92                   Page 1





SELECT(3C-SVR4)     RISC/os Reference Manual      SELECT(3C-SVR4)



     Any of readfds, writefds, and execptfds may be given as NULL
     pointers if no descriptors are of interest.

RETURN VALUE
     select returns the number of ready descriptors contained in
     the descriptor sets or -1 if an error occurred.  If the time
     limit expires, then select returns 0.

ERRORS
     An error return from select indicates:

     EBADF          One of the I/O descriptor sets specified an
                    invalid I/O descriptor.

     EINTR          A signal was delivered before any of the
                    selected events occurred, or the time limit
                    expired.

     EINVAL         A component of the pointed-to time limit is
                    outside the acceptable range:  t_sec must be
                    between 0 and 10^8, inclusive. t_usec must be
                    greater-than or equal to 0, and less than
                    10^6.

SEE ALSO
     poll(2), read(2), write(2)

NOTES
     The default value for FD_SETSIZE (currently 1024) is larger
     than the default limit on the number of open files.  In
     order to accommodate programs that may use a larger number
     of open files with select, it is possible to increase this
     size within a program by providing a larger definition of
     FD_SETSIZE before the inclusion of <sys/types.h>.

     In future versions of the system, select may return the time
     remaining from the original timeout, if any, by modifying
     the time value in place.  It is thus unwise to assume that
     the timeout value will be unmodified by the select call.

     The descriptor sets are always modified on return, even if
     the call returns as the result of a timeout.













 Page 2                 Printed 11/19/92



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026