User guide

6: ICP Software
DC 900-1338I 97
the value of the
buffer.size file which is downloaded with the application. (See the /free-
way/boot/spsload
file.)
During initialization, the utility task creates the header buffer partition and posts node
declaration queue requests to XIO to establish nodes to be used by the ICP for reading
from, and writing to, the ICPs host. As requested by the utility task, XIO creates read
and/or write request queues for each node. Node 1 (the main node) and node 2 (the pri-
ority node) are special insofar as all information coming to the ICP from the ICPs host
arrives through these nodes. These nodes do have write queues, and in rare cases (such
as rejecting an erroneous attach request) are used to pass information back to the ICPs
host, but for the most part they are a one-way path for messages coming from the ICPs
host. These messages are then de-multiplexed to the various links. The remaining nodes
are used strictly by the ICP for writing to the ICPs host.
The utility task begins by creating all the nodes as well as the queues for the system
header and data buffers. After this initialization, the utility task operates in a loop and
performs the following functions:
1. Keeps reads posted on the main and priority nodes
2. Distributes incoming buffers to the correct server-to-board queues
3. Posts buffers from the board-to-server queues to the appropriate nodes
The utility task is also responsible for the verification of session and link IDs, and for
swapping bytes within words (to allow for differences in word ordering for Big Endian
(Motorola) and Little Endian (Intel and VAX)), both for messages coming from and
messages going to the ICPs host. When no message processing is required, the utility
task suspends and will be unsuspended by the protocol task or when a message is posted
to its input queue.
The following sections provide detailed examples of read and write processing by the
utility task. Figure 66 shows the SPS message format.