diff options
author | Dave Jones <davej@redhat.com> | 2006-09-29 04:59:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-29 12:18:05 -0400 |
commit | 199a9afc3dbe98c35326f1d3907ab94dae953a6e (patch) | |
tree | f656df600bec86e8764af2e33bc4a0b98330e758 /include/linux/list.h | |
parent | df67b3daea602728b51325a4debaeeb912ee51d1 (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.h | 15 |
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 | ||
42 | static inline void __list_add(struct list_head *new, | 43 | static 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 | ||
53 | extern 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 | ||
60 | static inline void list_add(struct list_head *new, struct list_head *head) | 67 | static 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 | ||
72 | extern 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 | ||
156 | static inline void list_del(struct list_head *entry) | 168 | static 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 | ||
175 | extern 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 |