73 #define DlInitHead(_head)       \    75     (_head)->Next = (_head);    \    76     (_head)->Prev = (_head);    \   128 #define DlIsListEmpty(_head) \   129     ((_head)->Next == _head)   170 #define OFFSET_OF(_type, _field)    \   171     ((size_t)&((_type *)0)->_field)   183 #ifndef CONTAINING_RECORD   184 #define CONTAINING_RECORD(_address, _type, _field)  \   185     ((_type *)((unsigned char *)(_address) - OFFSET_OF(_type, _field)))   197 #define DlForEachNode(_head, _node) \   198     for ((_node) = (_head)->Next; (_node) != (_head); (_node) = (_node)->Next)   208 #define DlForEachNodeReverse(_head, _node) \   209     for ((_node) = (_head)->Prev; (_node) != (_head); (_node) = (_node)->Prev) 
void DlInsertNodeAfter(DlNode_t *Marker, DlNode_t *Node)
void DlRemoveNode(DlNode_t *Node)
DlNode_t * DlRemoveNodeFromHead(DlNode_t *Head)
void DlInsertNodeBefore(DlNode_t *Marker, DlNode_t *Node)
DlNode_t * DlRemoveNodeFromTail(DlNode_t *Head)
void DlAddNodeToTail(DlNode_t *Head, DlNode_t *Node)
void DlAddNodeToHead(DlNode_t *Head, DlNode_t *Node)
struct DlNode_t_ DlNode_t