Architecture independent level 1 (DDI/DKI).
The queue structure is defined as type queue_t.
struct qinit | *q_qinfo; | /* module or driver entry points */ |
struct msgb | *q_first; | /* first message in queue */ |
struct msgb | *q_last; | /* last message in queue */ |
struct queue | *q_next; | /* next queue in stream */ |
struct queue | *q_link; | /*to next queue for scheduling*/ |
void | *q_ptr; | /* pointer to private data structure */ |
ulong | q_count; | /* approximate size of message queue */ |
ulong | q_flag; | /* status of queue */ |
long | q_minpsz; | /* smallest packet accepted by QUEUE */ |
long | q_maxpsz; | /* largest packet accepted by QUEUE */ |
ulong | q_hiwat; | /* high water mark */ |
ulong | q_lowat; | /* low water mark */ |
Valid flags are as follows:
- QENAB
- queue is already enabled to run.
- QWANTR
- someone wants to read queue.
- QWANTW
- someone wants to write to queue.
- QFULL
- queue is considered full.
- QREADR
- this is the reader (first) queue.
- QUSE
- this queue in use (allocation).
- QNOENB
- do not enable queue via putq.