18 #ifndef __CCD_LIST_H__ 19 #define __CCD_LIST_H__ 22 #include <ccd/compiler.h> 41 #define ccdListEntry(ptr, type, member) \ 42 ccd_container_of(ptr, type, member) 47 #define ccdListForEach(list, item) \ 48 for (item = (list)->next; \ 49 _ccd_prefetch((item)->next), item != (list); \ 55 #define ccdListForEachSafe(list, item, tmp) \ 56 for (item = (list)->next, tmp = (item)->next; \ 58 item = tmp, tmp = (item)->next) 66 #define ccdListForEachEntry(head, pos, postype, member) \ 67 for (pos = ccdListEntry((head)->next, postype, member); \ 68 _ccd_prefetch(pos->member.next), &pos->member != (head); \ 69 pos = ccdListEntry(pos->member.next, postype, member)) 78 #define ccdListForEachEntrySafe(head, pos, postype, n, ntype, member) \ 79 for (pos = ccdListEntry((head)->next, postype, member), \ 80 n = ccdListEntry(pos->member.next, postype, member); \ 81 &pos->member != (head); \ 82 pos = n, n = ccdListEntry(n->member.next, ntype, member)) 132 return head->
next == head;
struct _ccd_list_t * next
_ccd_inline void ccdListInit(ccd_list_t *l)
_ccd_inline int ccdListEmpty(const ccd_list_t *head)
_ccd_inline ccd_list_t * ccdListPrev(ccd_list_t *l)
_ccd_inline void ccdListAppend(ccd_list_t *l, ccd_list_t *item)
struct _ccd_list_t * prev
_ccd_inline ccd_list_t * ccdListNext(ccd_list_t *l)
_ccd_inline void ccdListDel(ccd_list_t *item)