ioctl(2)




NAME

     ioctl - control device


SYNOPSIS

     #include <unistd.h>
     #include <stropts.h>

     int ioctl(int fildes, int request, /* arg */ ...);


DESCRIPTION

     The ioctl() function performs a variety of control functions
     on devices and STREAMS. For non-STREAMS files, the functions
     performed by this call are   device-specific  control  func-
     tions.
      The request argument and an optional  third  argument  with
     varying type are passed to the file designated by fildes and
     are interpreted by the device driver.

     For STREAMS files, specific functions are performed  by  the
     ioctl() function as described in streamio(7I).

     The fildes argument is an open file descriptor  that  refers
     to a device.  The request argument selects the control func-
     tion to  be  performed  and  depends  on  the  device  being
     addressed.   The  arg  argument  represents a third argument
     that has additional  information  that  is  needed  by  this
     specific device to perform the requested function.  The data
     type of arg depends upon the particular control request, but
     it  is  either an int or a pointer to a device-specific data
     structure.

     In addition to device-specific and STREAMS  functions,  gen-
     eric  functions  are provided by more than one device driver
     (for  example,  the  general   terminal   interface.)    See
     termio(7I)).


RETURN VALUES

     Upon successful completion, the value returned depends  upon
     the  device  control  function,  but  must be a non-negative
     integer.  Otherwise, -1 is returned  and  errno  is  set  to
     indicate the error.


ERRORS

     The ioctl() function will fail for any type of file if:

     EBADF The fildes argument is not a valid open file  descrip-
           tor.

     EINTR A signal  was  caught  during  the  execution  of  the
           ioctl() function.

     EINVAL
           The STREAM or  multiplexer  referenced  by  fildes  is
           linked (directly or indirectly) downstream from a mul-
           tiplexer.

     The ioctl() function will also fail  if  the  device  driver
     detects an error.  In this case, the error is passed through
     ioctl() without change to the caller.  A  particular  driver
     might  not  have all of the following error cases. Under the
     following conditions, requests to device  drivers  may  fail
     and set errno to indicate the error

     EFAULT
           The request argument requires a data  transfer  to  or
           from  a buffer pointed to by arg, but arg points to an
           illegal address.

     EINVAL
           The request or arg argument is not valid for this dev-
           ice.

     EIO   Some physical I/O error has occurred.

     ENOLINK
           The fildes argument is on a  remote  machine  and  the
           link to that machine is no longer active.

     ENOTTY
           The fildes argument is not associated with  a  STREAMS
           device that accepts control functions.

     ENXIO The request and arg arguments are valid for this  dev-
           ice  driver, but the service requested can not be per-
           formed on this particular subdevice.

     ENODEV
           The fildes argument refers to a valid STREAMS  device,
           but  the  corresponding device driver does not support
           the ioctl() function.

     STREAMS errors are described in streamio(7I).


SEE ALSO

     streamio(7I), termio(7I)


Man(1) output converted with man2html