Linux STREAMS (LiS)


Other Resources

Information about writing STREAMS drivers and applications is available from other sites on the Internet. The following links may prove useful. Keep in mind that these links are to Unix documentation. Therefore, these documents cover many more kernel routines and services than appear in LiS.

  Link Description
  Amazon.com

This link goes to Amazon.com. Search for the string "Unix streams". From there you can order a hard copy of the official Unix System V Release 4: Programmer's Guide: Streams. This is the reference for LiS STREAMS.

  Open Group

You will need to register (free) to view the documentation. This is official SVR4 documentation. It only covers user level, not driver level interfaces. Once you have registered, do a search on "STREAMS". There is also a DLPI specification available there.

  Sun Solaris Documentation

Documentation on Sun style STREAMS drivers. Very close to SVR4. Ignore information about multi-threaded drivers. The man pages for section 9 are especially helpful.

  UnixWare 7 Documentation

Start by scrolling the left panel down to "Hardware and Driver Development". Man page lookups work well, also. Ignore information about multi-threaded drivers and execution context.

  UnixWare 2 Documentation

Look for "SCO UnixWare Application Server Release 2" and then select man page section "3D". UW7 docs are easier to browse.

  Linux Journal

Linux Journal #61, May 1999, LiS: Linux STREAMS by Fransisco Ballesteros, Denis Froschauer, David Grothe and Graham Wheeler. Not available online. Gives an overview of Linux STREAMS.

  Gcom web site

LiS documentation is available online and can be searched using the search engine on the home page. A white paper on the history of STREAMS is also available.

  Demultiplexed Architectures: A Solution for Efficient STREAMS Based Communication Stacks (1997)

Abstract: : This paper analyzes the efficiency of various high performance implementation techniques for the communication system of UNIX workstations. Using an Open System implies that a certain compatibility level is required from the protocol, user interface, and implementation framework. These constraints limit the opportunities to design a high performance communication system. We have designed an experimental platform around the TCP/IP protocol suite, using the STREAMS environment. A BSD TCP/IP stack and a classic STREAMS based TCP/IP stack serve as reference implementations for performance comparisons. We explain why the efficiency of some high performance implementation techniques we applied...

  Approaches to Improving Performance of STREAMS-Based Protocol Stacks

New approaches to improved efficiency in STREAMS based protocol stacks. Document in PDF format.

  The Performance of Alternative Threading Architectures for Parallel Communication Subsystems

Threading architectures for protocol stacks. Document in PDF format.

  Multiprocessor Streams for Plan 9 (1993)

Abstract: This paper describes an implementation of Streams for the Plan 9 kernel, a multithreaded, multiprocessor kernel with a system call interface reminiscent of UNIX. Rather than port Dennis Ritchie's Streams to Plan 9, we changed the abstraction to fit more naturally into the new environment. The result is a mechanism that has similar performance and is internally easier to program.

  Integrated Layer Processing Can Be Hazardous to Your Performance (1996)

Abstract: Integrated Layer Processing (ILP) has been presented as an implementation technique to improve communication protocol performance by reducing the number of memory references. Previous research has however not pointed out that in some circumstances ILP can significantly increase the number of memory references, resulting in lower communication throughput. We explore the performance effects of applying ILP to data manipulation functions with varying characteristics. The functions are generated from a set of parameters including input and output block size, state size and number of instructions. We present experimental data for varying function state sizes, number of integrated functions and instruction counts.