Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ tirdwr(M) — OpenDesktop 1.1.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

streamio(M)

timod(M)

intro(S)

getmsg(S)

putmsg(S)

read(S)

write(S)

intro(S)

TIRDWR(M)


     TIRDWR(M)                            UNIX System V



     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 a
          user to communicate with  the  transport  protocol  provider
          using  the read(S) and write(S) system calls.  The putmsg(S)
          and getmsg(S) system  calls  may  also  be  used.   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(M)]   onto  a  stream  terminated  by  a  transport
          protocol provider which supports the TI.  After  the  tirdwr
          module  has been pushed onto a stream, none of the Transport
          Interface functions can be used.   Subsequent  calls  to  TI
          functions will cause an error on the stream.  Once the error
          is detected, subsequent system  calls  on  the  stream  will
          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(M)]
          off the stream, or when data passes through it.

          push -    When the module is pushed onto a stream,  it  will
                    check  any  existing data destined for the user to
                    ensure  that  only  regular  data   messages   are
                    present.   It  will  ignore  any  messages  on the
                    stream that relate to process management, such  as
                    messages   that   generate  signals  to  the  user
                    processes associated  with  the  stream.   If  any
                    other messages are present, the I_PUSH will return
                    an error with errno set to EPROTO.

          write -   The module will take 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) will be  transparently
                       passed onto the module's downstream neighbor.

                    -  Any zero length data messages will be freed  by
                       the module and they will not be passed onto the
                       module's downstream neighbor.

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

          read -    The module will take 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)  will  be  transparently
                       passed onto the module's upstream neighbor.

                    -  The  action  taken  on  messages  with  control
                       portions will be as follows:

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

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

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

                         +  Messages  that   represent   an   abortive
                            disconnect  indication  from the transport
                            provider will cause all further write  and
                            putmsg system calls to fail with errno set
                            to ENXIO.  All  further  read  and  getmsg
                            system  calls will 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 will
                            generate an error and all  further  system
                            calls associated with the stream will fail
                            with errno set to EPROTO.

          -  Any zero length data messages will be freed by the module
             and  they  will  not be passed onto the module's upstream
             neighbor.

          pop -     When the module is popped off the  stream  or  the
                    stream   is  closed,  the  module  will  take  the
                    following action:

                    -  If  an  orderly  release  indication  has  been
                       previously  received,  then  an orderly release
                       request will be sent to the remote side of  the
                       transport connection.


     See Also
          streamio(M),  timod(M),  intro(S),   getmsg(S),   putmsg(S),
          read(S), write(S), intro(S)

          STREAMS Primer
          STREAMS Programmer's Guide
          Network Programmer's Guide


     (printed 2/15/90)                                  TIRDWR(M)





















































































































































































































































































































































































































































































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