[ Previous |
AIX Version 4.3 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).
[ Previous |