Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ tirdwr(7) — sys5 — Apollo Domain/OS SR10.4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

streamio(7)

timod(7)

intro(2)

getmsg(2)

putmsg(2)

read(2)

write(2)

intro(3)

TIRDWR(7)                            SysV                            TIRDWR(7)



NAME
     tirdwr - Transport Interface read/write interface STREAMS module

DESCRIPTION
     tirdwr is a STREAMS module that provides an alternate interface to a
     transport provider which supports the Transport Interface (TI) functions
     of the Network Services library (see Section 3N).  This alternate
     interface allows you to communicate with the transport protocol provider
     using the read(2) and write(2) system calls.  You can also use the
     putmsg(2) and getmsg(2) system calls, however, putmsg and getmsg can only
     transfer data messages between user and stream.

     The tirdwr module must only be pushed (see I_PUSH in streamio(7)) to a
     stream terminated by a transport protocol provider which supports the TI.
     After the tirdwr module has been pushed to a stream, none of the TI
     functions can be used.  Subsequent calls to TI functions cause an error
     on the stream.  Once the error is detected, system calls on the stream
     return an error with errno set to EPROTO.

     The following are the actions taken by the tirdwr module when pushed on
     the stream, popped (see I_POP in streamio(7)) off the stream, or when
     data passes through it.

     push -    When the module is pushed to a stream, it checks your existing
               data to ensure that only regular data messages are present.  It
               ignores any messages on the stream that relate to process
               management, such as messages that generate signals to your
               processes associated with the stream.  If any other messages
               are present, the I_PUSH returns an error with errno set to
               EPROTO.

     write -   The module takes the following actions on data that originated
               from a write system call:

               ⊕  All messages with the exception of messages that contain
                  control portions (see the putmsg and getmsg system calls)
                  are transparently passed to the module's downstream
                  neighbor.

               ⊕  Any zero length data messages are freed by the module and
                  are not passed to the module's downstream neighbor.

               ⊕  Any messages with control portions generate an error, and
                  any further system calls associated with the stream fail
                  with errno set to EPROTO.

     read -    The module takes the following actions on data that originated
               from the transport protocol provider:

               ⊕  All messages with the exception of those that contain
                  control portions (see the putmsg and getmsg system calls)
                  are transparently passed to the module's upstream neighbor.

               ⊕  The following action is taken on messages with control
                  portions:

                    -  Messages that represent expedited data generate an
                       error.  All further system calls associated with the
                       stream fail with errno set to EPROTO.

                    -  Any data messages with control portions have the
                       control portions removed from the message prior to
                       passing the message on to the upstream neighbor.

                    -  Messages that represent an orderly release indication
                       from the transport provider generate a zero length data
                       message, indicating the end of file, which is sent to
                       the reader of the stream.  The orderly release message
                       itself is freed by the module.

                    -  Messages that represent an abortive disconnect
                       indication from the transport provider cause all
                       further write and putmsg system calls to fail with
                       errno set to ENXIO.  All further read and getmsg system
                       calls return zero length data (indicating end of file)
                       once all previous data has been read.

                    -  With the exception of the above rules, all other
                       messages with control portions generate an error and
                       all further system calls associated with the stream
                       fail with errno set to EPROTO.

               ⊕  Any zero length data messages are freed by the module and
                  are not passed to the module's upstream neighbor.

     pop -     The module takes the following action when popping the module
               off or closing the stream:

               ⊕  If an orderly release indication has been previously
                  received, an orderly release request is sent to the remote
                  side of the transport connection.

               ⊕  If an abortive disconnect was previously received, no action
                  is taken.

               ⊕  If neither an abortive disconnect nor an orderly release
                  were previously received, the module initiates an abortive
                  disconnect.

               ⊕  If an error occurred previously and an abortive disconnect
                  was not previously received, the module initiates an
                  abortive disconnect.

SEE ALSO
     streamio(7), timod(7)
     intro(2), getmsg(2), putmsg(2), read(2), write(2), intro(3) in the SysV
     Programmer's Reference.
     Getting Started with SysV STREAMS
     Programming with SysV STREAMS
     Programming with the SysV Transport Interface

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026