SVR5 and SCO OpenServer 5
M_PROTO(D7str)
M_PROTO, M_PCPROTO --
hold internal control information and associated data
Description
M_PROTO and M_PCPROTO are used
to hold internal control information and associated data.
The message format is
one M_PROTO or M_PCPROTO message block
followed by zero or more M_DATA message blocks as shown below.
The semantics of the M_DATA and M_PROTO message block
are determined by the STREAMS module that receives the message.
These message blocks typically contain
implementation-dependent control information.
M_PROTO messages are generally sent bidirectionally
on a Stream, and their contents can be passed between a process
and the Stream head.
The contents of the first message block of
an M_PROTO message are generally referred to
as the control part,
and the contents of any following M_DATA message blocks
are referred to as the data part.
In the
getmsg
and
putmsg
system calls,
the control and data parts are passed separately.
These calls refer to M_PROTO messages
as non-priority messages,
and the M_PCPROTO messages as priority messages.
On the write side, the user can only generate
M_PROTO mesages containing
one M_PROTO message block.
putmsg
and
putpmsg
follow these rules.
Note that
write
on a Stream does not generate any M_PROTO blocks
because that interface can only write data,
not the control information that M_PROTO contains.
Although this usage is not recommended,
the format of M_PROTO and M_PCPROTO
(generically PROTO)
messages sent upstream to the Stream head allows
multiple PROTO blocks at the beginning of the message.
getmsg compacts the blocks into a single
control part when passing them to the user process.
The M_PCPROTO message type
has the same format and characteristics
as the M_PROTO message type,
except for priority
and the following additional attributes:
-
When an M_PCPROTO message is placed on a queue,
its service procedure is always enabled.
The Stream head allows only one M_PCPROTO message
to be placed in its read queue at a time.
If an M_PCPROTO message
is already in the queue when another arrives,
the second message is silently discarded
and its message blocks freed.
-
M_PCPROTO messages send data and control information
outside the normal flow control constraints.
-
The
getmsg
and
putmsg
system calls refer to M_PCPROTO messages as priority messages.
Message type
M_PROTO message blocks are ordinary (non-priority);
M_PCPROTO message blocks are priority.
Version applicability
ddi:
1, 2, 3, 4, 5, 5mp, 6, 6mp, 7, 7mp, 7.1, 7.1mp, 8, 8mp
oddi:
1, 2, 2mp, 3, 3mp, 4, 4mp, 5, 5mp
References
streamio
19 June 2005
© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005