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