Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ioctl(2) — Atari System V 1.1-06

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

streamio(7)

termio(7)





   ioctl(2)                                                           ioctl(2)


   NAME
         ioctl - control device

   SYNOPSIS
         #include <unistd.h>

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

   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.  request and an optional third
         argument with varying type are passed to the file designated by
         fildes and are interpreted by the device driver.  This control is not
         frequently used on non-STREAMS devices, where the basic input/output
         functions are usually performed through the read(2) and write(2)
         system calls.

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

         fildes is an open file descriptor that refers to a device.  request
         selects the control function to be performed and depends on the
         device being addressed.  arg 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, generic
         functions are provided by more than one device driver, for example,
         the general terminal interface [see termio(7)].

         ioctl fails for any type of file if one or more of the following are
         true:

         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 also fails 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:





   8/91                                                                 Page 1









   ioctl(2)                                                           ioctl(2)


         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's 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.

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

         STREAMS errors are described in streamio(7).

   SEE ALSO
         streamio(7) in the Programmer's Guide: STREAMS.
         termio(7) in the System Administrator's Reference Manual.

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



























   Page 2                                                                 8/91





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