NonStop S-Series Server Description Manual (G06.24+)

Interprocessor Communication
HP NonStop S-Series Server Description Manual520331-003
9-4
Linker-Listener Protocol
Linker-Listener Protocol
Figure 9-2 separately shows the linker-listener protocol as if lower levels of protocol did
not exist. However, it is those lower levels that actually carry out the actions shown
here.
The linker-listener protocol consists of a request (1) and a reply (2). Optionally, data
can be included in either the request or the reply—or both or neither, depending on
what the linker process wants to do. Data included in the request is called request
data, and data included in the reply is called reply data.
Control information is always included in a message. This control information is stored
in buffers that are physically separate from the data buffers and are called request
control buffers and reply control buffers. For simplicity, however, Figure 9-2 combines
control and data storage, and considers all these buffers to be “data” buffers.
The linker process begins the communication by invoking the message system,
instructing it to send request control information (and optionally data, such as for a
write request) to the listener process. The message-system call used by the linker to
create and send the message is MSG_LINK_.
After the listener processor has received the message, the listener processor
immediately stores the control information (and request data, if any) either directly in
the listener’s request data buffer (as shown) or in temporary space in a cache or small
buffer—depending on the combined size of the control and data. Then the message
system alerts the listener process that a message has arrived. Accordingly, the listener
process calls its message system with MSG_LISTEN_ to find out basic information
about the message: its size, message identification, whether request data was
included,and so on. With that information, the listener again calls the message system
with MSG_READCONTROL_ to obtain the control information, which provides
processing requirements, such as reading or writing data. If request data was stored in
a cache, the listener also calls MSG_READDATA_ to transfer the message data into its
request data buffer.
After the request has been fully handled, the listener again calls its message system
(with MSG_REPLY_) to send a reply message back to the linker process. The reply
message always contains control information, providing status about the status of the
request. This informs the linker that the data has (or conceivably has not) been written.
If reply data is to be included in the reply, such as for a read request, the listener
includes such data in its reply.
When the linker processor receives the reply message, it immediately stores the reply
data in the linker’s reply data buffer, and the message system alerts the linker process
that a message has arrived. Accordingly, the linker uses MSG_BREAK_ to obtain the
reply control information from the message system, which provides status information
about the listeners handling of the original request. This call also informs the linker
that reply data, if any, is present in the reply data buffer.