HPUX ioctl[5]



ioctl in anderen Kapiteln des hpux Handbuch: ioctl.2




 ioctl(5)                                                           ioctl(5)





 NAME
      ioctl - generic device control commands

 SYNOPSIS
      #include <sys/ioctl.h>
      ioctl(fildes, request, arg)
      int fildes, request;

 DESCRIPTION
      The ioctl(2) system call provides for control over open devices.  This
      include file describes requests and arguments used in ioctl(2) which
      are of a generic nature.  For details about how individual requests
      will affect any particular device, see the corresponding device manual
      entry in Section (7).  If a device does not support an ioctl request
      it returns EINVAL.

      FIONREAD
              Returns in the long integer whose address is arg the number of
              characters immediately readable from the device file.

      FIOSSAIOSTAT
              For those character device files which support this command,
              if the integer whose address is arg is non-zero, system
              asynchronous I/O is enabled; that is, enable SIGIO to be sent
              to the process currently designated with FIOSSAIOOWN (see
              below) whenever device-file-dependent events occur.  If no
              process has been designated with FIOSSAIOOWN, then enable
              SIGIO to be sent to the first process to open the device file.

              If the designated process has exited, the SIGIO signal is not
              sent to any process.

              If the integer whose address is arg is 0, system asynchronous
              I/O is disabled.

      FIOGSAIOSTAT
              For those character device files which support this command,
              the integer whose address is arg is set to 1, if system
              asynchronous I/O is enabled.  Otherwise, the integer whose
              address is arg is set to 0.

      FIOSSAIOOWN
              For those character device files which support this command,
              set process ID to receive the SIGIO signals with system
              asynchronous I/O to the value of the integer whose address is
              arg.  Users with appropriate privileges can designate that any
              process receive the SIGIO signals.  If the request is not made
              by the super-user, only the calling process is allowed to
              designate that itself or another process whose real or saved
              effective user ID matches its real or effective user ID, or a
              process which is a descendant of the calling process, receive



 Hewlett-Packard Company            - 1 -     HP-UX Release 9.0: August 1992






 ioctl(5)                                                           ioctl(5)





              the SIGIO signals.  If no process can be found corresponding
              to that specified by the integer whose address is arg, the
              call will fail, with errno set to ESRCH.  If the request is
              not made by the super-user and the calling process attempts to
              designate a process other than itself or (1) another process
              whose real or saved effective user ID matches its real or
              effective user ID, or (2) a process which is not a descendant
              of the calling process, the call fails, with errno set to
              EPERM.

              If the designated process subsequently exits, the SIGIO signal
              will not be sent to any process.

              The default when opening a device file is that the process
              performing the open is set to receive the SIGIO signals.

      FIOGSAIOOWN
              For those character device files which support this command,
              the integer whose address is arg is set to the process ID
              designated to receive SIGIO signals.

      FIOSNBIO
              For those character device files which support this command,
              if the integer whose address is arg is non-zero, non-blocking
              I/O is enabled; that is, subsequent reads and writes to the
              device file are handled in a non-blocking manner (see below).
              If the integer whose address is arg is 0, non-blocking I/O is
              disabled.

              For reads, non-blocking I/O prevents all read requests to that
              device from blocking, whether the requests succeed or fail.
              Such read requests complete in one of three ways:

                 o  If there is enough data available to satisfy the entire
                    request, the read completes successfully, having read
                    all of the data, and returns the number of bytes read;

                 o  If there is not enough data available to satisfy the
                    entire request, the read completes successfully, having
                    read as much data as possible, and returns the number of
                    bytes it was able to read;

                 o  If there is no data available, the read fails and errno
                    is set to EWOULDBLOCK.

              For writes, non-blocking I/O prevents all write requests to
              that device file from blocking, whether the requests succeed
              or fail.  Such a write request completes in one of three ways:

                 o  If there is enough space available in the system to
                    buffer all the data, the write completes successfully,



 Hewlett-Packard Company            - 2 -     HP-UX Release 9.0: August 1992






 ioctl(5)                                                           ioctl(5)





                    having written out all of the data, and returns the
                    number of bytes written;

                 o  If there is not enough space in the buffer to write out
                    the entire request, the write completes successfully,
                    having written as much data as possible, and returns the
                    number of bytes it was able to write;

                 o  If there is no space in the buffer, the write fails and
                    errno is set to EWOULDBLOCK.

              To prohibit non-blocking I/O from interfering with the
              O_NDELAY flag (see open(2) and fcntl(2)), the functionality of
              O_NDELAY always supercedes the functionality of non-blocking
              I/O.  This means that if O_NDELAY is set, the driver performs
              read requests in accordance with the definition of O_NDELAY.
              When O_NDELAY is not set, the definition of non-blocking I/O
              applies.

              The default on open of a device file is that non-blocking I/O
              is disabled.

      FIOGNBIO
              For those character device files which support this command,
              the integer whose address is arg is set to 1, if non-blocking
              I/O is enabled.  Otherwise, the integer whose address is arg
              is set to 0.

 WARNINGS
      FIOSSAIOSTAT is similar to 4.2 BSD FIOASYNC, with the addition of
      provisions for security.  FIOGSAIOSTAT is of HP origin, complements
      FIOSSAIOSTAT, and allows saving and restoring system asynchronous I/O
      TTY state for BSD style job control.  FIOSSAIOOWN is similar to 4.2
      BSD FIOSETOWN, with the addition of provisions for security.
      FIOGSAIOOWN is similar to 4.2 BSD FIOGETOWN.  Note also the difference
      that the 4.2 BSD version of this functionality used process groups,
      while the HP-UX version only uses processes.  FIOSNBIO is the same as
      4.2 BSD FIONBIO, except that it does not interfere with the AT&T
      O_NDELAY open and fcntl flag.  FIOGNBIO is of HP origin, complements
      FIOSNBIO, and allows saving and restoring non-blocking I/O TTY state
      for BSD-style job control.

 SEE ALSO
      ioctl(2).
      Section 7 of this manual.









 Hewlett-Packard Company            - 3 -     HP-UX Release 9.0: August 1992