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