ZCOM Tables and Data Structures

Queue Header

is initialized from the Queue-Limitparameter in the TTGEN configuration file when the queue is initialized. The queue limit may be modified dynamically by calling the zsetql routine.

QHEAD, QTAIL - Queue head and tail pointers (zbhd_type *)

These are pointers to the first and last messages attached to this queue. If the queue is empty, these values are undefined. If the queue has only one buffer, then the values are equal.

QMMAX - Number of messages on the queue

The largest number of outstanding messages ever linked to this queue at any given point in time. This value is initialized to zero and is updated any time QNMSG is larger than this field.

QTMSG - Total number of messages through this queue

Counter of all messages that have either passed through, or are still on, this queue.

QBYTES - Number of bytes on the queue

The number of bytes on the queue is the actual number of bytes of all the buffers (messages) linked to this queue. This includes the data length and buffer header areas of each message in the queue. The sum of these fields across all queues (including the free queue) at any instant will equal the total amount of buffer space allocated in the ZCOM subsystem.

QWAITER - Number of processes waiting on this queue

This field is used to indicate whether any processes are waiting for data from this queue. If a process reads from the queue and no data is available, and it has not done a read without wait, the process is suspended (put to sleep) by the LDM and this counter is incremented. At a later time when a new message is added to this queue, the LDM or DAM will wake up all processes suspended on this queue address and set this field to zero.

Chapter 3

103