X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=config%2Flist.h;h=685d80e1bb0e77de75a97a2ada22991131597b58;hb=a423328607a8dfbf84e3b92cbde918a8bd7a8c8d;hp=b87206cc92f464650fad3a8ee4178ecfee6cf973;hpb=6da709bd7e0a559edd4313aa894e56da5606dc7b;p=carl9170fw.git diff --git a/config/list.h b/config/list.h index b87206c..685d80e 100644 --- a/config/list.h +++ b/config/list.h @@ -101,4 +101,31 @@ static inline void list_add_tail(struct list_head *_new, struct list_head *head) __list_add(_new, head->prev, head); } +/* + * Delete a list entry by making the prev/next entries + * point to each other. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_del(struct list_head *prev, struct list_head *next) +{ + next->prev = prev; + prev->next = next; +} + +#define LIST_POISON1 ((void *) 0x00100100) +#define LIST_POISON2 ((void *) 0x00200200) +/** + * list_del - deletes entry from list. + * @entry: the element to delete from the list. + * Note: list_empty() on entry does not return true after this, the entry is + * in an undefined state. + */ +static inline void list_del(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + entry->next = (struct list_head*)LIST_POISON1; + entry->prev = (struct list_head*)LIST_POISON2; +} #endif