ioctl-sockets [ MPE/iX Developer's Kit Reference Manual Volume I ] MPE/iX 5.0 Documentation
MPE/iX Developer's Kit Reference Manual Volume I
ioctl-sockets
Provides an interface and control over magnetic tape devices. In the
case of magnetic tape devices, the ioctl() function provides an interface
for issuing various control commands to opened tape devices. The ioctl()
operations can be used to position the magnetic tape, and to determine
the tape device status.
Syntax
int ioctl(fildes, request, arg)
int fildes;
int request;
void *arg;
Parameters
fildes The socket descriptor.
request This parameter specifies which command to perform on the
socket. The commands are defined in <sys/ioctl.h>. The
different commands that are available are described below.
FIONREAD Gets the number of bytes that are readable from
the socket. For TCP sockets, this is the total
number of bytes queued to the socket. For UDP
sockets, this is the total number of bytes
queued in each datagram and the sum of all the
source address structures. The arg parameter,
will contain the address of the integer with the
number of bytes readable.
FIOSNBIO Enables or disables non-blocking I/O for the
socket. If the integer whose address is arg is
not zero, then non-blocking I/O is enabled.
When non-blocking I/O is enabled, subsequent
read and write requests to the socket are
prevented from blocking whether the request
succeeds or fails. If the integer whose address
is arg is zero, then non-blocking I/O is
disabled.
FIONBIO This command is same as the FIOSNBIO command.
FIOGNBIO Gets the status of non-blocking i/o. If
non-blocking i/o is enabled for the socket, then
the integer whose address is arg is set to 1.
If non-blocking i/o is disabled, the integer is
set to zero.
FIOGSAIOSTAT If asynchronous signaling is enabled for the
socket, then the integer whose address is arg is
set to 1. If the asynchronous state is
disabled, the integer is set to zero.
SIOCATMARK For SOCK_STREAM TCP sockets, upon return if the
integer whose address is arg is not zero, then
the inbound TCP stream has been read up to where
the out-of-band data byte starts. If the
integer at address arg is zero, then the inbound
TCP stream has not yet been read up to where the
out-of-band data byte starts. For non-TCP
sockets, upon return the integer with the
address arg is always zero.
SIOCSPGRP This command sets the process group or process
ID associated with the socket to be the value of
the integer whose address is arg. If the value
of the integer is positive, then a signal is
sent to the process with the matching process ID
value when the state of the socket changes. If
the value is negative, then a signal is sent to
all processes that have a process group equal to
the absolute value of the specified value when
the socket state changes. If the value of the
integer with address arg is zero, no signal is
sent to any processes when the socket state
changes.
SIOCGPGRP This command returns the process group or
process ID associated with the socket in the
integer whose address is arg. If the integer is
positive, then the value returned corresponds to
a process ID. If the integer is negative, then
the value returned corresponds to all processes
that have a process group equal to the absolute
value of that value.
arg This parameter is the address of the integer that the
specified request needs in order to perform its function.
Depending on the type of request specified, the integer can
represent a variety of values. See the appropriate request
command for an explanation of the value that the integer will
represent in that context.
Return Values
0 The function completes successfully.
-1 If an error occurs, a value of -1 is returned by the function
and the global variable errno is set with the resultant error.
Description
Sockets are communication endpoints that allow processes to communicate
either locally or remotely. For sockets, the ioctl() function provides
an interface for setting different characteristics for a socket, and
retrieving information on a socket.
Implementation Considerations
There will not be any implementation defined items in the sockets portion
of ioctl().
There are no mixed environment issues for the sockets portion of ioctl().
Errors
If an error occurs, errno is set to one of the following values:
EBADF CAUSE The argument fildes is not a valid open file
descriptor.
ACTION Check to see if fildes has been altered or if fildes
is not initialized.
Table 4-0. (cont.)
EFAULT CAUSE The system detected a NULL address while attempting
to use the arg parameter passed by the caller.
ACTION Check to see if the pointer used is initialized
and/or not equal to NULL.
EINTR CAUSE Once this function is executing an intrinsic, no
signal interruption may occur. Signal interrupts can
only occur in the library portion of the code.
ACTION Check the state of the socket referenced by fildes.
EINVAL CAUSE The request parameter or the arg parameter is
invalid, or a socket type that is not supported was
specified.
ACTION Validate the request and arg values; check if the
socket type is supported.
See Also
ioctl-streams, ioctl-mag_tape(), POSIX.1
MPE/iX 5.0 Documentation