STREAM(3)                                               STREAM(3)

     NAME
          stream - a structure for communications

     SYNOPSIS
          x/data
          x/ctl

     DESCRIPTION
          A stream is not a device per se.  However, many devices use
          the streams package in the kernel to implement communica-
          tions channels.  The properties described here are common to
          all such channels.

          All streams are represented by two standard files, ctl and
          data, plus any others the particular device wants to add.
          Reading and writing the data file receives and sends data on
          the channel.  If the channel is message oriented, each write
          will represent a message and each read will return at most
          one message.  If the buffer given in a read is smaller than
          the message, subsequent reads will return the remainder of
          the message.

          Writing textual command strings to the ctl file performs
          control operations on the stream.  The strings need not be
          null-terminated.  Each device may add to the control opera-
          tions.  The common control operations are:

          hangup        Hang up this stream.  Any subsequent writes
                        will return an error.  The first subsequent
                        read will return 0.  All following ones will
                        return an error.

          push name     Push the module name onto the top of the
                        stream.

          pop           Pop the top module off the stream

          Reading the ctl file returns a textual identifier for the
          stream.  This is used by multiplexed devices and its use is
          described with the particular device.

     SEE ALSO
          pipe(3), dk(3), cons(3), async(3)

     Page 1                       Plan 9             (printed 12/2/22)