Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ioctl(2) — UnixWare 2.01

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 on 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)].

          Return Values
             On success, ioctl returns a non-negative integer that depends
             on the device control function.  On failure, ioctl returns -1
             and sets errno to identify the error.

          Errors
             In the following conditions, ioctl fails and sets errno to:

            EACCES The type of access requested on the file designated by
                    fildes is denied.





                           Copyright 1994 Novell, Inc.               Page 1













      ioctl(2)                                                    ioctl(2)


           EBADF  fildes is not a valid open file descriptor.

           ENOTTY fildes is not associated with a character-special file
                   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 the
            following error cases.  In the following conditions, requests
            to device drivers may fail and set errno to:

           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 cannot 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).

      REFERENCES
            streamio(7), termio(7)

      NOTICES
         Considerations for Threads Programming
            Open file descriptors are a process resource and available to
            any sibling thread; if used concurrently, actions by one
            thread can interfere with those of a sibling.

            While one thread is blocked, siblings might still be
            executing.






                          Copyright 1994 Novell, Inc.               Page 2








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