/* dequeue.h * a generalized doubly linked circular list structure */ /* macro to return last and first dequeue element (nb: lastnode is least recently used file descriptor in mfile application) */ #define lastNode (qNode->pNode) #define firstNode (qNode->nNode) /* generalized dequeue structure prefix - overlayed on user defined struct */ typedef struct q { struct q *pNode, /* ptr to prev node */ *nNode; /* ptr to next node */ int nodeNum; /* node number - redundancy/optional */ /* rest of user defined structure resides here */ } QUEUE; /* storage for dequeue package */ extern QUEUE Nodeq; /* semaphore element - signals start & end of dequeue */ extern QUEUE *qNode; /* pointer to element */ /* end of dequeue.h */