ZCOM Tables and Data Structures

Queue Header

QFLAG - Queue flags

This field contains some indicators which may affect the processing of a queue. The format is shown in Table 3-29.

Table 3-29

Queue Flag Format

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15-8

 

7

6

5

4

 

3

 

2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

COL

 

SEL

 

FUNC

BLT

ENB

 

 

 

 

 

 

 

 

 

 

 

 

 

Symbol

Value

Meaning

 

 

 

 

 

 

 

 

(hex)

 

 

 

 

 

ZCOM_QFLAG_EN

0x0001

Queue is enabled

 

 

B

 

 

 

 

 

 

 

ZCOM_QFLAG_BLT

0x0002

Queue limit on byte size

 

 

ZCOM_QFLAG_FU

0x0004

Queue uses wakeup function

 

NC

 

 

 

 

 

 

 

ZCOM_QFLAG_SEL

0x0008

Queue has a failed “select”

 

ZCOM_QFLAG_COL

0x0010

Queue has a “select” collision

When the FUNC bit is set, it indicates the kernel function kept in qfunc is to be called whenever data is added to the queue. This feature may only be used by kernel drivers (via the zsetkfunc routine).

The BLT bit is set if the queue limit check is performed on the number of bytes rather than the number of messages. Currently, only the PTT unacknowledged transmit queue uses it.

Queue manipulation is allowed only when the ENB bit is set. All queues are set to disabled by TTGEN initially, and enabled by the zopen( ) call (where a buffer queue is assigned to a ZLU). During ZCOM subsystem shutdown, the LDM will disable the program queues by clearing this bit.

The SEL and COL bits are used internally for the “select-for-read” function on program ZLUs. When a program ZLU has been “selected” while it has no data, the LDM sets the SEL bit. If more than one program selects this empty ZLU, the COL bit is set. When data arrives for this ZLU the LDM uses these two bits to decide whether to wake up one or multiple programs waiting on the “select” for this ZLU.

104

Chapter 3