device typically resorts to dropping incoming messages. Consider a network card whose input buffer is full.
The network card must simply drop further messages until there is enough buffer space to store incoming messages.
The benefit of using STREAMS is that it provides a framework for a modular and incremental approach to writing device drivers and network protocols.
Modules may be used by different streams and hence by different devices.
For example, a networking module may be used by both an Ethernet network card and a 802.11 wireless network card.
Furthermore, rather than treating character-device I/O as an unstructured byte stream, STREAMS allows support for message boundaries and control information when communicating between modules.
Most UNIX variants support STREAMS, and it is the preferred method for writing protocols and device drivers.
For example, System V UNIX and Solaris implement the socket mechanism using STREAMS.