The SCO OpenServer 5 Release 5 kernel implementation and interface is based on the System V Release 3 implementation. While it has been supplemented with many System V Release 4 features, the internal implementation does not always match that of System V Release 4. For example, SCO OpenServer 5 Release 5 STREAMS structures are all compatible with System V Release 3, but most have a pointer to an extended structure that includes data for SVID/3 compliance, dynamic memory and multithreading.
The SCO OpenServer 5 Release 5 kernel is quite different from the System V Release 4 kernel, which means that System V Release 4 documentation is generally not relevant for device driver writers. In some cases, this documentation provides useful hints; the SCO OpenServer 5 Release 5 kernel supports some of the same functions and has many structures that are named similarly to those in System V Release 4, but the implementation and contents will differ. When porting STREAMS drivers from other operating system platforms, check the SCO OpenServer 5 <sys/stream.h> header file and documentation to ensure that the structures, message types, and kernel functions used in the driver conform to those supported for SCO OpenServer 5 Release 5.
The SCO kernel-level STREAMS implementation has evolved a bit since its earliest releases, adding new members to some structures or extended structures referenced with pointers from within the basic structures. Additional modifications were made to support multithreading, dynamic memory, and SVID/3 conformance. Note especially that the SCO OpenServer 5 Release 5 kernel allocates STREAMS buffers and control structures dynamically. This is a more robust implementation for the system but may affect drivers that assume that allocated STREAMS buffers are physically contiguous.
SCO OpenServer 5 Release 5 STREAMS are multithreaded, which enhances the performance of multithreaded network adapter drivers that are implemented on top of STREAMS.
The SCO OpenServer 5 Release 5 STREAMS implementation
is backward compatible,
meaning that the old structures are still supported.
Existing STREAMS drivers that are recompiled
for SCO OpenServer 5 Release 5 will automatically get
the new structure definitions.
Code modifications are required
to use new features such as
user-allocated memory buffers, multithreading,
and priority banded messages.