Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

streamio(7)

termio(7)

IOCTL(2)                             SysV                             IOCTL(2)



NAME
     ioctl - control device

SYNOPSIS
     int ioctl (fildes, request, arg)
     int fildes, request;

DESCRIPTION
     ioctl performs a variety of control functions on devices and STREAMS.
     For non-STREAMS files, the functions performed by this call are "device-
     specific" control functions.  The arguments request and arg 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 call as
     described in streamio(7).  On non-STREAMS devices, the basic input/output
     functions more often are performed through the read(2) and write(2)
     system calls.

     fildes is an open file descriptor that refers to a device.  request
     selects the control function to be performed and will depend on the
     device being addressed.  arg represents 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 integer or a pointer to a device-specific data structure.

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

ERRORS
     ioctl will fail for any type of file if one or more of the following are
     true:

     [EACCES]     Future error.

     [EBADF]      fildes is not a valid open file descriptor.

     [ENOTTY]     fildes is not associated with a device driver that accepts
                  control functions.

     [EINTR]      A signal was caught during the ioctl system call.

     ioctl 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 may not have all of the following error cases.  Other
     requests to device drivers will fail if one or more of the following are
     true:

     [EFAULT]   request requires a data transfer to or from a buffer pointed
                to by arg, but some part of the buffer is outside the process'
                allocated space.

     [EINVAL]   request or arg is not valid for this device.

     [EIO]      Some physical I/O error has occurred.

     [ENXIO]    The request and arg are valid for this device driver, but the
                service requested can not be performed on this particular
                subdevice.

     STREAMS errors are described in streamio(7).
SEE ALSO
     streamio(7), termio(7) in Domain/OS System Administration Reference

DIAGNOSTICS
     The return value of a successful call depends upon the device control
     function but must be a non-negative integer.  Otherwise, a value of -1 is
     returned and errno is set as indicated in "Errors."

NOTES
     Under other implementations, ioctl fails if the following is true:

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

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