HP 3000 Manuals

ioctl-streams [ MPE/iX Developer's Kit Reference Manual Volume I ] MPE/iX 5.0 Documentation


MPE/iX Developer's Kit Reference Manual Volume I

ioctl-streams 

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 open file descriptor for the stream that will be used.

request    This parameter specifies which command to perform on the
           stream.  The commands are defined in <sys/stropts.h>.  The
           different commands that are available are described below.

           FIOGNBIO         Gets the status of non-blocking i/o.  If
                            non-blocking i/o is enabled, then the integer
                            whose address is arg is set to 1.  If
                            non-blocking i/o is disabled, then the
                            integer is set to zero.

           FIONBIO          Enables or disables non-blocking i/o.  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 device file 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.

           I_ATMARK         Checks to see if the next message is "marked"
                            by the downstream module.  If the earg value
                            is set to ANYMARK, then the check will be to
                            see if the message is marked.  If the arg 
                            value is set to LASTMARK, then the check will
                            be to see if the message is the last one that
                            is marked on the queue.  If marked conditions
                            is satisfied, a 1 is returned; otherwise a
                            zero is returned.

           I_CANPUT         Checks if a message can be passed on a
                            stream.  The arg parameter specifies which
                            priority band to check.  If the priority band
                            is flow controlled, then a zero is returned;
                            otherwise a 1 is returned.

           I_CKBAND         Checks if a priority band message is
                            currently on the stream head read queue.  The
                            ^fearg^s parameter specifies the priority
                            band being checked.  If a message is on the
                            queue, a 1 is returned; otherwise a zero is
                            returned.

           I_FDINSERT       Creates a message and sends it downstream.

           I_FIFO           Converts a stream into a FIFO. Used for
                            non-System V systems.

           I_FIND           Checks for a specific module in the stream.
                            The arg parameter will contain the name of
                            the module to be searched for.  If the module
                            is present, a 1 is returned; otherwise a zero
                            is returned.

           I_FLUSH          Flushes the read and/or write queues of the
                            stream depending on the value of the arg 
                            parameter.

           I_FLUSHBAND      Flushes a read and/or write band of messages
                            depending on the value of the arg parameter.
                            The band of messages to be flushed is also
                            defined in the arg structure.

           I_GETBAND        Gets the priority of the next message on the
                            stream read queue.  The priority is returned
                            in the arg parameter.

           I_GETCLTIME      Gets the time delay for closing a stream.
                            The time value is returned in the arg 
                            parameter.

           I_GETSIG         Gets the events for which the calling process
                            has registered to receive a signal.  The
                            events are returned in the arg parameter.

           I_GETSTREAMID    Gets the stream handle for a C-library file
                            descriptor.  Use for NETWARE.

           I_GRDOPT         Gets the current read mode setting of the
                            stream.  The integer value is returned in the
                            arg parameter.

           I_GWROPT         Gets the current write mode setting of the
                            stream.  The integer value is returned in the
                            arg parameter.

           I_LINK           Connects two streams.  The descriptor of the
                            stream referenced by fildes parameter is
                            connected to the descriptor of the stream
                            that is referenced in the arg parameter.

           I_LIST           Gets the list of names of the modules present
                            on the stream.

           I_LOOK           Gets the name of the first stream module, and
                            places in a character string pointed to by
                            the arg parameter.

           I_NREAD          Returns the number of bytes in the data block
                            of the first message on the stream read
                            queue.  The number of bytes is stored in a
                            location pointed to by the arg parameter.

           I_PEEK           Allows the user process to "peek"/look at the
                            first message on the stream read queue.  This
                            information will be stored in a location
                            pointed to by the arg parameter.  If a
                            message is retrieved, a 1 is returned;
                            otherwise a zero is returned.

           I_PIPE           Connects two streams as a pipe.  Used for
                            non-System V systems.

           I_PLINK          Permanently connects two streams.  The
                            descriptor of the stream referenced by the
                            fildes is connected to the descriptor of the
                            stream referenced by the arg parameter.  The
                            latter stream is connected via a persistent
                            link that can exist even if the first stream
                            is closed.

           I_POP            Removes/pops the module just below the stream
                            head.  For this request, the arg parameter
                            must be set to zero.

           I_PUNLINK        Disconnects two streams that are connected
                            via a persistent link.

           I_PUSH           Pushes the module whose name is pointed to by
                            the arg parameter onto the stream just below
                            the stream head.

           I_RECVFD         Retrieves the file descriptor associated with
                            the message sent by the I_SENDFD command over
                            a stream pipe.

           I_SENDFD         Requests the stream referred to by fildess to
                            send a message M_PASSFP to the stream head at
                            the other end of a stream pipe.

           I_SETCLTIME      Sets the time that the stream head delays
                            when the stream is closing and the write
                            queues contain data.  The arg parameter
                            contains a pointer to the number of
                            milliseconds to delay.

           I_SETSIG         Tells the stream head that the user process
                            wants a SIGPOLL signal to be issued by the
                            kernel for a particular event that can occur
                            on a stream.  This command provides support
                            for asynchronous processing in streams.  The
                            arg parameter contains information that
                            specifies the particular events that SIGPOLL
                            is to be sent for.

           I_SRDOPT         Sets the read mode of the stream according to
                            the value of the arg parameter.

           I_STR            Creates an internaltioctl() message from the
                            data pointed to by the arg parameter and
                            sends the message downstream to a module or
                            driver.

           I-SWROPT         Sets the stream write mode according to the
                            value of the arg parameter.

           I_UNLINK         Disconnects two streams.  One descriptor
                            referenced by the fildes parameter, and the
                            other descriptor referenced by the arg 
                            parameter.

arg        This parameter contains additional information that the
           specified request may need to perform its function.  This is
           usually an integer or a pointer to a structure specific to the
           request.  See the appropriate request command for an
           explanation of the value that the integer will represent in
           that context.

Return Values 

If the ioctl function completes successfully, the following two
conditions can occur.  If a specific condition is met, then a 1 is
returned; if the condition is not met, then a 0 is returned.

If the ioctl function does not complete successfully, then a value of -1
is returned by the function and the global variable errno is set with the
resultant error.

Description 

The ioctl() commands can be used to perform control operations on
streams.  User processes can use the commands on all streams file types.

When the stream head receives a streams ioctl() function, the request and
the arg parameters are interpreted into an M_IOCTL message.  In some
cases, the parameters are passed onto a module or driver in the stream.

The module in a stream can detect errors in the ioctl() function.  If an
error is detected, an error message containing the error number is sent
to the stream head.  Subsequent calls to functions will fail with the
errno set to this number.

Implementation Considerations 

None.

Errors 

There are many corresponding errors for each of the request commands
mentioned above.  For a list of these errors, and an explanation of the
different error conditions, please refer to the HP-UX Release 9.0 manual.

See Also 

ioctl-mag_tape, ioctl-streams, POSIX.1



MPE/iX 5.0 Documentation