Go to main content

STREAMS Programming Guide

Exit Print View

Updated: November 2020
 
 

Manipulating Modules

With STREAMS, you can manipulate modules from the user application level, interchange modules with common service interfaces, and change the service interface to a STREAMS user process. These capabilities yield further benefits when working with networking services and protocols:

  • User-level programs can be independent of underlying protocols and physical communication media.

  • Network architectures and higher-level protocols can be independent of underlying protocols, drivers, and physical communication media.

  • Higher-level services can be created by selecting and connecting lower-level services and protocols.

The following examples show the benefits of STREAMS capabilities for creating service interfaces and manipulating modules. These examples are only illustrations and do not necessarily reflect real situations.

Protocol Portability

Protocol Module Portability shows how an X.25 protocol module can work with different drivers on different systems by using compatible service interfaces. The X.25 protocol module interfaces are Connection Oriented Network Service (CONS) and Link Access Protocol – Balanced (LAPB).

Figure 6  Protocol Module Portability

image:Diagram demonstrates that the same protocol module can be used by different drivers on               different systems.

Protocol Substitution

You can alternate protocol modules and device drivers on a system if the alternates are implemented to an equivalent service interface.

Protocol Migration

Protocol Migration shows how STREAMS can move functions between kernel software and front-end firmware. A common downstream service interface lets the transport protocol module be independent of the number or type of modules below it. The same transport module will connect without modification to either an X.25 module or X.25 driver that has the same service interface.

By shifting functions between software and firmware, you can produce cost-effective, functionally equivalent systems over a wide range of configurations. This means you can swiftly incorporate technological advances. The same transport protocol module can be used on a lower-capacity system, where economics preclude the use of front-end hardware, and also on a larger scale system where a front-end is economically justified.

Figure 7  Protocol Migration

image:Diagram shows that the protocol layer can be included in a driver rather than in a separate module.

Module Reusability

Module Reusability shows the same canonical module (for example, one that provides delete and kill processing on character strings) reused in two different streams. This module would typically be implemented as a filter, with no service interface. In both cases, a TTY interface is presented to the stream's user process because the module is nearest the stream head.

Figure 8  Module Reusability

image:Diagram shows reuse of the same canonical module in two different streams.