Manual page for ioctl(2)
ioctl - control device
SYNOPSIS
#include <unistd.h>
#include <stropts.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.
For STREAMS files, specific functions are performed by
the
ioctl()
call as described in
streamio.7i
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.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
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.
- EINTR
-
A signal was caught during the
ioctl()
function.
- EINVAL
-
The
STREAM
or multiplexer referenced by fildes is linked (directly or
indirectly) downstream from a multiplexer.
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:
- EFAULT
-
request
requires a data transfer to or from
a buffer pointed to by
arg,
but
arg
points to an illegal address.
- EINVAL
-
request
or
arg
is not valid for this device.
- EIO
-
Some physical I/O error has occurred.
- ENOLINK
-
fildes is on a remote machine and the link
to that machine is no longer active.
- ENOTTY
-
fildes
is not associated with a
STREAMS
device that accepts control functions.
- ENXIO
-
The
request
and
arg
arguments are valid for this device driver,
but the service requested can not be performed
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
Created by unroff & hp-tools.
© by Hans-Peter Bischof. All Rights Reserved (1997).
Last modified 07/October/97