aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/list.h
diff options
context:
space:
mode:
authorDave Jones <davej@redhat.com>2006-09-29 04:59:00 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-09-29 12:18:05 -0400
commit199a9afc3dbe98c35326f1d3907ab94dae953a6e (patch)
treef656df600bec86e8764af2e33bc4a0b98330e758 /include/linux/list.h
parentdf67b3daea602728b51325a4debaeeb912ee51d1 (diff)
[PATCH] Debug variants of linked list macros
Signed-off-by: Dave Jones <davej@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux/list.h')
-rw-r--r--include/linux/list.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/list.h b/include/linux/list.h
index 65a5b5ceda49..a9c90287c0ff 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -39,6 +39,7 @@ static inline void INIT_LIST_HEAD(struct list_head *list)
39 * This is only for internal list manipulation where we know 39 * This is only for internal list manipulation where we know
40 * the prev/next entries already! 40 * the prev/next entries already!
41 */ 41 */
42#ifndef CONFIG_DEBUG_LIST
42static inline void __list_add(struct list_head *new, 43static inline void __list_add(struct list_head *new,
43 struct list_head *prev, 44 struct list_head *prev,
44 struct list_head *next) 45 struct list_head *next)
@@ -48,6 +49,11 @@ static inline void __list_add(struct list_head *new,
48 new->prev = prev; 49 new->prev = prev;
49 prev->next = new; 50 prev->next = new;
50} 51}
52#else
53extern void __list_add(struct list_head *new,
54 struct list_head *prev,
55 struct list_head *next);
56#endif
51 57
52/** 58/**
53 * list_add - add a new entry 59 * list_add - add a new entry
@@ -57,10 +63,15 @@ static inline void __list_add(struct list_head *new,
57 * Insert a new entry after the specified head. 63 * Insert a new entry after the specified head.
58 * This is good for implementing stacks. 64 * This is good for implementing stacks.
59 */ 65 */
66#ifndef CONFIG_DEBUG_LIST
60static inline void list_add(struct list_head *new, struct list_head *head) 67static inline void list_add(struct list_head *new, struct list_head *head)
61{ 68{
62 __list_add(new, head, head->next); 69 __list_add(new, head, head->next);
63} 70}
71#else
72extern void list_add(struct list_head *new, struct list_head *head);
73#endif
74
64 75
65/** 76/**
66 * list_add_tail - add a new entry 77 * list_add_tail - add a new entry
@@ -153,12 +164,16 @@ static inline void __list_del(struct list_head * prev, struct list_head * next)
153 * Note: list_empty on entry does not return true after this, the entry is 164 * Note: list_empty on entry does not return true after this, the entry is
154 * in an undefined state. 165 * in an undefined state.
155 */ 166 */
167#ifndef CONFIG_DEBUG_LIST
156static inline void list_del(struct list_head *entry) 168static inline void list_del(struct list_head *entry)
157{ 169{
158 __list_del(entry->prev, entry->next); 170 __list_del(entry->prev, entry->next);
159 entry->next = LIST_POISON1; 171 entry->next = LIST_POISON1;
160 entry->prev = LIST_POISON2; 172 entry->prev = LIST_POISON2;
161} 173}
174#else
175extern void list_del(struct list_head *entry);
176#endif
162 177
163/** 178/**
164 * list_del_rcu - deletes entry from list without re-initialization 179 * list_del_rcu - deletes entry from list without re-initialization