diff options
author | Benjamin Poirier <bpoirier@suse.de> | 2013-04-16 10:07:23 -0400 |
---|---|---|
committer | Yann E. MORIN <yann.morin.1998@free.fr> | 2013-04-16 22:00:31 +0200 |
commit | 9a69abf80edf2ea0dac058cab156879d29362788 (patch) | |
tree | b94e9a202805b4de9afce670e17ba720592d2cc5 /scripts/kconfig/list.h | |
parent | edb749f4390b3c1604233dc7c4fb0361f472e712 (diff) |
menuconfig: Add "breadcrumbs" navigation aid
Displays a trail of the menu entries used to get to the current menu.
Signed-off-by: Benjamin Poirier <bpoirier@suse.de>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
[yann.morin.1998@free.fr: small, trivial code re-ordering]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Diffstat (limited to 'scripts/kconfig/list.h')
-rw-r--r-- | scripts/kconfig/list.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/scripts/kconfig/list.h b/scripts/kconfig/list.h index b87206cc92f4..ea1d58119d20 100644 --- a/scripts/kconfig/list.h +++ b/scripts/kconfig/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 = LIST_POISON1; + entry->prev = LIST_POISON2; +} #endif |