[ Bottom of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]
Communications Programming Concepts
Differences Between Portable Streams Environment and V.4 STREAMS
Portable Streams Environment (PSE) was implemented from the AT&T UNIX System V Release 4, Programmer's Guide: STREAMS document.
It is designed for compatibility with existing STREAMS applications and modules
that adhere to the STREAMS design guidelines.
Extensions to STREAMS
In some areas, the STREAMS definition is extended to enhance functionality.
These enhancements include:
- Extended read modes. PSE supports an extra read mode, RFILL, which requests that the stream head fill a buffer completely before
returning to the application. This is used in conjunction with a cooperating
module and M_READ messages.
- The putctl2 utility. A new
utility routine, putctl2, is supported for creating
M_ERROR messages with 2 bytes of data. The parameters are the same as for
the putctl1 utility.
- Autopush names. The PSE autopush command accepts device names in place of major numbers on the command
line. It then translates names into major numbers with the help of the sc module.
Note
Although these extensions can be used freely in this
operating system, their use limits portability.
Differences in PSE
Although PSE is written to the specifications in the AT&T document,
there are places in which compatibility with the specification is not implemented
or is not possible. These differences are:
- Include files. Not all structures and definitions in AT&T include
files are discussed in the STREAMS documentation. Module and application writers
can use only those symbols specified in the documentation.
- Module configuration. The configuration of modules and devices under PSE
is different from AT&T System V Release 4 in that there is no master file
or related structures. PSE maintains an fmodsw table for modules, and a dmodsw
table for devices and multiplexors. Entries are dynamically placed in these
tables as modules are loaded into a running system. Similarly, PSE normally
supports init routines for modules and devices, but
not start routines.
- Logging device. The STREAMS logging device is named /dev/slog. The /dev/log node refers to a different
type of logging device.
- Structure definitions. PSE supports the standard STREAMS structure definitions
in terms of field names and types, but also includes additional fields for
host-specific needs. Modules and applications should not depend on the field
position or structure size as taken from STREAMS documentation. Also, PSE
does not support the notion of expanded fundamental types and the associated _STYPES definition.
- Queue flags. PSE defines, but does not implement, the QBACK and QHLIST queue flags.
- Memory allocation. PSE does not support the rmalloc, rminit, and rmfree memory allocation
routines.
- Named streams. PSE does not support named streams and the associated fdetach program.
- Terminals. PSE does not include STREAMS-based terminals or the related
modules and utilities (including job control primitives). However, nothing
in PSE prevents STREAMS-based terminals from being added.
- Network selection. PSE does not support the V.4 Network Selection
and Name-to-Address Mapping extensions to the TLI (Transport Layer Interface).
[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]