ioctl(S)
ioctl --
I/O control command
Syntax
cc ... -lc
#include <unistd.h>
int ioctl (fildes, request, arg)
int fildes, request;
Description
The ioctl system call
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. Basic input/output functions in
STREAMS are performed with the
read(S)
and
write(S)
system calls.
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 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(M)).
Diagnostics
The ioctl system call
fails for any type of file
if one or more of the following is true:
[EACCES]-
Future error.
[EBADF]-
fildes
is not a valid open file descriptor.
[EINTR]-
A signal was caught during the
ioctl
system call.
[ENOTTY]-
fildes
is not associated with a device driver
that accepts control functions.
The ioctl system call
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.
Other requests to device drivers fails if
one or more of the following is true:
[EFAUL]-
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.
[ENOLINK]-
fildes is on a remote machine and the link
to that machine is no longer active.
[ENXIO]-
The request and arg
are valid for this device driver,
but the service requested cannot be performed
on this particular subdevice.
STREAMS errors are described in
streamio(M).
Return value
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.
See also
termio(M)
Standards conformance
ioctl is conformant with:
Intel386 Binary Compatibility Specification, Edition 2 (iBCSe2)
.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003