ioctl(5) ioctl(5)
NAME [Toc] [Back]
ioctl - generic device control commands
SYNOPSIS [Toc] [Back]
#include <sys/ioctl.h>
ioctl(fildes, request, arg)
int fildes, request;
DESCRIPTION [Toc] [Back]
The ioctl(2) system call provides for control over open devices. This
include file describes requests and arguments used in ioctl(2) which
are of a generic nature. For details about how individual requests
will affect any particular device, see the corresponding device manual
entry in Section (7). If a device does not support an ioctl request
it returns [EINVAL].
FIONREAD Returns in the long integer whose address is arg the
number of characters immediately readable from the
device file.
FIOSSAIOSTAT For those character device files which support this
command, if the integer whose address is arg is
non-zero, system asynchronous I/O is enabled; that
is, enable SIGIO to be sent to the process currently
designated with FIOSSAIOOWN (see below) whenever
device-file-dependent events occur. If no process
has been designated with FIOSSAIOOWN, then enable
SIGIO to be sent to the first process to open the
device file.
If the designated process has exited, the SIGIO
signal is not sent to any process.
If the integer whose address is arg is 0, system
asynchronous I/O is disabled.
FIOGSAIOSTAT For those character device files which support this
command, the integer whose address is arg is set to
1, if system asynchronous I/O is enabled.
Otherwise, the integer whose address is arg is set
to 0.
FIOSSAIOOWN For those character device files which support this
command, set process ID to receive the SIGIO signals
with system asynchronous I/O to the value of the
integer whose address is arg. Users with
appropriate privileges can designate that any
process receive the SIGIO signals. If the request
is not made by the super-user, only the calling
process is allowed to designate that itself or
another process whose real or saved effective user
Hewlett-Packard Company - 1 - HP-UX 11i Version 2: August 2003
ioctl(5) ioctl(5)
ID matches its real or effective user ID, or a
process which is a descendant of the calling
process, receive the SIGIO signals. If no process
can be found corresponding to that specified by the
integer whose address is arg, the call will fail,
with errno set to [ESRCH]. If the request is not
made by the super-user and the calling process
attempts to designate a process other than itself or
(1) another process whose real or saved effective
user ID matches its real or effective user ID, or
(2) a process which is not a descendant of the
calling process, the call fails, with errno set to
[EPERM].
If the designated process subsequently exits, the
SIGIO signal will not be sent to any process.
The default when opening a device file is that the
process performing the open is set to receive the
SIGIO signals.
FIOGSAIOOWN For those character device files which support this
command, the integer whose address is arg is set to
the process ID designated to receive SIGIO signals.
FIOSNBIO For those character device files which support this
command, if the integer whose address is arg is
non-zero, non-blocking I/O is enabled; that is,
subsequent reads and writes to the device file are
handled in a non-blocking manner (see below). If
the integer whose address is arg is 0, non-blocking
I/O is disabled.
For reads, non-blocking I/O prevents all read
requests to that device from blocking, whether the
requests succeed or fail. Such read requests
complete in one of three ways:
+ If there is enough data available to satisfy the
entire request, the read completes successfully,
having read all of the data, and returns the
number of bytes read;
+ If there is not enough data available to satisfy
the entire request, the read completes
successfully, having read as much data as
possible, and returns the number of bytes it was
able to read;
+ If there is no data available, the read fails and
errno is set to [EWOULDBLOCK].
Hewlett-Packard Company - 2 - HP-UX 11i Version 2: August 2003
ioctl(5) ioctl(5)
For writes, non-blocking I/O prevents all write
requests to that device file from blocking, whether
the requests succeed or fail. Such a write request
completes in one of three ways:
+ If there is enough space available in the system
to buffer all the data, the write completes
successfully, having written out all of the data,
and returns the number of bytes written;
+ If there is not enough space in the buffer to
write out the entire request, the write completes
successfully, having written as much data as
possible, and returns the number of bytes it was
able to write;
+ If there is no space in the buffer, the write
fails and errno is set to [EWOULDBLOCK].
To prohibit non-blocking I/O from interfering with
the O_NDELAY flag (see open(2) and fcntl(2)), the
functionality of O_NDELAY always supersedes the
functionality of non-blocking I/O. This means that
if O_NDELAY is set, the driver performs read
requests in accordance with the definition of
O_NDELAY. When O_NDELAY is not set, the definition
of non-blocking I/O applies.
The default on open of a device file is that nonblocking
I/O is disabled.
FIOGNBIO For those character device files which support this
command, the integer whose address is arg is set to
1, if non-blocking I/O is enabled. Otherwise, the
integer whose address is arg is set to 0.
WARNINGS [Toc] [Back]
FIOSSAIOSTAT is similar to 4.2 BSD FIOASYNC, with the addition of
provisions for security. FIOGSAIOSTAT is of HP origin, complements
FIOSSAIOSTAT, and allows saving and restoring system asynchronous I/O
TTY state for BSD style job control. FIOSSAIOOWN is similar to 4.2
BSD FIOSETOWN, with the addition of provisions for security.
FIOGSAIOOWN is similar to 4.2 BSD FIOGETOWN. Note also the difference
that the 4.2 BSD version of this functionality used process groups,
while the HP-UX version only uses processes. FIOSNBIO is the same as
4.2 BSD FIONBIO, except that it does not interfere with the AT&T
O_NDELAY open and fcntl flag. FIOGNBIO is of HP origin, complements
FIOSNBIO, and allows saving and restoring non-blocking I/O TTY state
for BSD-style job control.
Hewlett-Packard Company - 3 - HP-UX 11i Version 2: August 2003
ioctl(5) ioctl(5)
SEE ALSO [Toc] [Back]
ioctl(2), socket(7), arp(7).
Section 7 of this manual.
Hewlett-Packard Company - 4 - HP-UX 11i Version 2: August 2003 [ Back ] |