SVR5 and SCO OpenServer 5


M_PROTO, M_PCPROTO -- hold internal control information and associated data


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:

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


19 June 2005
© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005