68 #define SlInitHead(_head) \ 79 #define SlAddNodeToHead(_head, _node) \ 80 SlInsertNodeAfter(_head, _node) 120 #define SlIsListEmpty(_head) \ 121 ((_head)->Next == NULL) 166 #define OFFSET_OF(_type, _field) \ 167 ((size_t)&((_type *)0)->_field) 179 #ifndef CONTAINING_RECORD 180 #define CONTAINING_RECORD(_address, _type, _field) \ 181 ((_type *)((unsigned char *)(_address) - OFFSET_OF(_type, _field))) 195 #define SlForEachNode(_head, _node) \ 196 for ((_node) = (_head)->Next; (_node) != NULL; (_node) = (_node)->Next) SlNode_t * SlRemoveNodeFromTail(SlNode_t *Head)
void SlRemoveNode(SlNode_t *Head, SlNode_t *Node)
SlNode_t * SlRemoveNodeFromHead(SlNode_t *Head)
struct SlNode_t_ SlNode_t
void SlInsertNodeBefore(SlNode_t *Head, SlNode_t *Marker, SlNode_t *Node)
void SlInsertNodeAfter(SlNode_t *Marker, SlNode_t *Node)
void SlAddNodeToTail(SlNode_t *Head, SlNode_t *Node)