STREAMS/UX for the HP 9000 Reference Manual
36
Differences Between STREAMS/UX and System V Release 4 STREAMS
HP-UX Changes to STREAMS/UX System Calls
pipes on the system will be STREAMS-based. However, fifos will not be
STREAMS-based. STREAMS/UX does not support STREAMS-based
fifos.
The STREAMS/UX device pipedev is only for internal STREAMS/UX use
in implementing STREAMS-based pipes. Opening a device file with
pipedev's major number will not result in a STREAMS-based pipe, or even a
properly functioning stream. STREAMS-based pipes must be created using
the pipe(2) system call.
PIPE_BUF is a pathname variable value, and SVID, XPG4, POSIX, etc.
define it as the maximum number of bytes that is guaranteed to be written
atomically. To obtain the correct value of PIPE_BUF, use fpathconf() (see
pathconf()). For STREAMS-based pipes, the value of PIPE_BUF depends
on the configurable parameter STRMSGZ (by default, 8KB). For example,
PIPE_BUF is set to 4KB if STRMSGSZ is 4KB, 8KB if STRMSGSZ is
8KB, and 16KB if STRMSGSZ is 16KB. There is one exception. If
STRMSGSZ is set to 0 (i.e. infinite size), then PIPE_BUF for
STREAMS/UX pipes is set to 8KB.
putmsg and putpmsg Modifications
Maximum and Minimum Data Buffer Size
The size of the user's data buffer must be within the minimum and
maximum packet size range specified in the topmost STREAM module's
streamtab. It must also be less than or equal to STRMSGSZ. If the number
of bytes to transfer is not in this range, ERANGE will be returned.
Maximum and Minimum Control Buffer Size
The size of the user's control buffer must be less than or equal to both
STRCTLSZ and STRMSGSZ. If STRCTLSZ is less than or equal to zero,
the page size is used instead of STRCTLSZ for this check.
Data Buffer Segmentation
The user's data buffer may be sent in multiple data blocks chained together
to form a message. The maximum number of bytes, including the write
offset, that can be sent in one data block is equal to the page size.