| ZCOM Message Handling | ||
| Message Queuing | ||
| Queues for terminal ZLUs are located in the physical terminal tables in | ||
| the ZCOM memory area as shown in Figure | ||
| tables (one per terminal) maintain four queues for each terminal. | ||
Figure | Physical Terminal Table | ||
|
|
|
|
|
| Physical Terminal Table |
|
|
|
|
|
|
|
|
|
|
| Express Queue |
|
|
|
|
|
|
| High Priority Queue |
|
|
|
|
|
|
| Low Priority Queue |
|
|
|
|
|
|
| Unacknowledged Queue |
|
|
|
|
|
|
|
|
|
| The driver reads messages first from the express queue until there are | ||
| no remaining express queue messages, then from the high priority queue | ||
| until there are no high priority messages, at which stage the low priority | ||
| queue is read. Any further additions to the higher priority queues will be | ||
| read before the driver continues with the lower priority queues. When | ||
| the interface card is ready to accept messages, the driver moves the | ||
| message to the unacknowledged queue and transfers the message to the | ||
| interface card (through the unacknowledged queue). Both the interface | ||
| card and the driver use DMA (Direct Memory Access) hardware to | ||
| transfer the messages. If the number of buffers on the unacknowledged | ||
| queue is less than the limit specified to TTGEN, more messages will be | ||
| transferred, otherwise the transfer will be suspended until some | ||
| outstanding messages are acknowledged. | ||
| Once the interface card has transmitted the message and has responded | ||
| with a definite status, the driver passes the status (if requested to do so) | ||
| back to the calling program. If the calling program also requires the | ||
| message buffer to be sent back with the status response, it is picked up | ||
| from the unacknowledged queue. Once the driver has passed the | ||
| message to the program, the message is removed from the | ||
| unacknowledged queue. | ||
| Messages in the unacknowledged queues for each terminal are also used | ||
| in a Mux restart: the messages are moved back to the high priority queue | ||
| to be resent. The size of the unacknowledged queue is configurable in the | ||
| TTGEN configuration file. |
28 | Chapter 2 |