136#define DLQ_NULL_NODE 1313
137#define DLQ_SHDR_NODE 2727
138#define DLQ_DHDR_NODE 3434
139#define DLQ_DATA_NODE 5757
140#define DLQ_DEL_NODE 8686
141#define DLQ_DEL_DHDR 9696
143#define dlq_hdr_t dlq_hdrT
155typedef struct TAGdlq_hdrT
164#define _hdr_node(P) (((const dlq_hdrT *)(P))->hdr_typ==DLQ_SHDR_NODE \
165 || ((const dlq_hdrT *)(P))->hdr_typ==DLQ_DHDR_NODE)
167#define _data_node(P) (((const dlq_hdrT *)(P))->hdr_typ==DLQ_DATA_NODE)
169#define _del_node(P) (((const dlq_hdrT *)(P))->hdr_typ==DLQ_DEL_NODE)
172#define dlq_hdr_node(P) _hdr_node(P)
174#define dlq_data_node(P) _data_node(P)
178#define DLQ_HAS_NEXT_NODE(P) (((const dlq_hdrT *)(P))->next)
189#define ENTER_CRIT ENTER_CS
190#define EXIT_CRIT EXIT_CS
205extern void dlq_dumpHdr (
const void *nodeP);
262#if defined(CPP_NO_MACROS)
265#define dlq_nextEntry(nodeP) (_data_node(((const dlq_hdrT *) (nodeP))->next) ? \
266 ((const dlq_hdrT *) (nodeP))->next : NULL)
277#if defined(CPP_NO_MACROS)
280#define dlq_prevEntry(nodeP) (_data_node(((const dlq_hdrT *) (nodeP))->prev ) ? \
281 ((const dlq_hdrT *) (nodeP))->prev : NULL)
324extern void dlq_swap (
void *new_node,
void *cur_node);
334#if defined(CPP_NO_MACROS)
337#define dlq_firstEntry(listP) ((listP) != ((const dlq_hdrT *)(listP))->next ? \
338 ((const dlq_hdrT *)(listP))->next : NULL)
349#if defined(CPP_NO_MACROS)
352#define dlq_lastEntry(listP) ((listP) != ((const dlq_hdrT *)(listP))->next ? \
353 ((const dlq_hdrT *)(listP))->prev : NULL)
364#if defined(CPP_NO_MACROS)
367#define dlq_empty(listP) (boolean)((listP)==((const dlq_hdrT *)(listP))->next)
void dlq_enque(REG void *newP, REG dlq_hdrT *listP)
add a queue node to the end of a queue list Add newP to listP
Definition: dlq.c:246
void dlq_block_move(dlq_hdrT *srcQ, void *srcP, dlq_hdrT *dstQ)
enque from [srcP .
Definition: dlq.c:931
#define dlq_nextEntry(nodeP)
get the next queue entry after the current entry
Definition: dlq.h:265
void dlq_destroyQue(dlq_hdrT *listP)
free a dynamic queue header previously allocated with dlq_createQue
Definition: dlq.c:206
unsigned int dlq_count(const dlq_hdrT *listP)
get the number of queue entries in the listP queue list
Definition: dlq.c:994
void dlq_createSQue(dlq_hdrT *queAddr)
create a static queue header
Definition: dlq.c:177
void dlq_block_insertAfter(dlq_hdrT *srcP, void *dstP)
insert all the entries in the srcP queue list after the dstP queue entry
Definition: dlq.c:863
void dlq_reverse_que(dlq_hdr_t *que)
Reverse the order of all the entries in a Q.
Definition: dlq.c:1070
void dlq_insertAfter(void *newP, void *nodeP)
insert the new queue entry after the current entry
Definition: dlq.c:482
void dlq_block_insertAhead(dlq_hdrT *srcP, void *dstP)
insert all the entries in the srcP queue list before the dstP queue entry
Definition: dlq.c:800
void dlq_insertAhead(void *newP, void *nodeP)
insert the new queue entry before the current entry
Definition: dlq.c:447
void dlq_swap(void *new_node, void *cur_node)
remove the cur_node queue entry from its queue list and replace it with the new_node
Definition: dlq.c:562
#define dlq_empty(listP)
check if queue list is empty
Definition: dlq.h:367
#define dlq_lastEntry(listP)
get the last entry in the queue list
Definition: dlq.h:352
dlq_hdrT * dlq_createQue(void)
create a dynamic queue header
Definition: dlq.c:146
#define dlq_firstEntry(listP)
get the first entry in the queue list
Definition: dlq.h:337
void * dlq_deque(dlq_hdrT *listP)
remove the first queue node from the queue list
Definition: dlq.c:286
boolean dlq_onQueue(const dlq_hdrT *nodeP)
Determine where a data node header is on a queue or not.
Definition: dlq.c:1039
#define dlq_prevEntry(nodeP)
get the previous queue entry before the current entry
Definition: dlq.h:280
void dlq_block_enque(dlq_hdrT *srcP, dlq_hdrT *dstP)
add all the queue entries in the srcP queue list to the end of the dstP queue list
Definition: dlq.c:731
void dlq_remove(void *nodeP)
remove the queue entry from its queue list entry MUST have been enqueued somehow before this function...
Definition: dlq.c:519
dlq header used for both the control block for a queue and also a queue header node within another st...
Definition: dlq.h:156
struct TAGdlq_hdrT * prev
previous header
Definition: dlq.h:158
struct TAGdlq_hdrT * next
next header
Definition: dlq.h:159
unsigned short hdr_typ
queue header type
Definition: dlq.h:157