summaryrefslogtreecommitdiff
path: root/scripts/kconfig/list.h
diff options
context:
space:
mode:
authorBenjamin Poirier <bpoirier@suse.de>2013-04-16 10:07:23 -0400
committerYann E. MORIN <yann.morin.1998@free.fr>2013-04-16 22:00:31 +0200
commit9a69abf80edf2ea0dac058cab156879d29362788 (patch)
treeb94e9a202805b4de9afce670e17ba720592d2cc5 /scripts/kconfig/list.h
parentedb749f4390b3c1604233dc7c4fb0361f472e712 (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.h27
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