diff options
| author | mochel@digitalimplant.org <mochel@digitalimplant.org> | 2005-03-24 15:58:57 -0500 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-06-20 18:15:17 -0400 |
| commit | 8b0c250be489dcbf1a3a33bb4ec4c7f33735a365 (patch) | |
| tree | 17935d1064101df10ad7bb2f7ed94e6a88af295c | |
| parent | 2287c322b61fced7e0c326a1a9606aa73147e3df (diff) | |
[PATCH] add klist_node_attached() to determine if a node is on a list or not.
Signed-off-by: Patrick Mochel <mochel@digitalimplant.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
diff -Nru a/include/linux/klist.h b/include/linux/klist.h
| -rw-r--r-- | include/linux/klist.h | 2 | ||||
| -rw-r--r-- | lib/klist.c | 16 |
2 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/klist.h b/include/linux/klist.h index fb52f9d9d611..eebf5e5696ec 100644 --- a/include/linux/klist.h +++ b/include/linux/klist.h | |||
| @@ -37,6 +37,8 @@ extern void klist_add_head(struct klist * k, struct klist_node * n); | |||
| 37 | extern void klist_del(struct klist_node * n); | 37 | extern void klist_del(struct klist_node * n); |
| 38 | extern void klist_remove(struct klist_node * n); | 38 | extern void klist_remove(struct klist_node * n); |
| 39 | 39 | ||
| 40 | extern int klist_node_attached(struct klist_node * n); | ||
| 41 | |||
| 40 | 42 | ||
| 41 | struct klist_iter { | 43 | struct klist_iter { |
| 42 | struct klist * i_klist; | 44 | struct klist * i_klist; |
diff --git a/lib/klist.c b/lib/klist.c index 6f760424648b..02177d72dc89 100644 --- a/lib/klist.c +++ b/lib/klist.c | |||
| @@ -112,6 +112,7 @@ static void klist_release(struct kref * kref) | |||
| 112 | struct klist_node * n = container_of(kref, struct klist_node, n_ref); | 112 | struct klist_node * n = container_of(kref, struct klist_node, n_ref); |
| 113 | list_del(&n->n_node); | 113 | list_del(&n->n_node); |
| 114 | complete(&n->n_removed); | 114 | complete(&n->n_removed); |
| 115 | n->n_klist = NULL; | ||
| 115 | } | 116 | } |
| 116 | 117 | ||
| 117 | static int klist_dec_and_del(struct klist_node * n) | 118 | static int klist_dec_and_del(struct klist_node * n) |
| @@ -154,6 +155,19 @@ EXPORT_SYMBOL_GPL(klist_remove); | |||
| 154 | 155 | ||
| 155 | 156 | ||
| 156 | /** | 157 | /** |
| 158 | * klist_node_attached - Say whether a node is bound to a list or not. | ||
| 159 | * @n: Node that we're testing. | ||
| 160 | */ | ||
| 161 | |||
| 162 | int klist_node_attached(struct klist_node * n) | ||
| 163 | { | ||
| 164 | return (n->n_klist != NULL); | ||
| 165 | } | ||
| 166 | |||
| 167 | EXPORT_SYMBOL_GPL(klist_node_attached); | ||
| 168 | |||
| 169 | |||
| 170 | /** | ||
| 157 | * klist_iter_init_node - Initialize a klist_iter structure. | 171 | * klist_iter_init_node - Initialize a klist_iter structure. |
| 158 | * @k: klist we're iterating. | 172 | * @k: klist we're iterating. |
| 159 | * @i: klist_iter we're filling. | 173 | * @i: klist_iter we're filling. |
| @@ -246,3 +260,5 @@ struct klist_node * klist_next(struct klist_iter * i) | |||
| 246 | } | 260 | } |
| 247 | 261 | ||
| 248 | EXPORT_SYMBOL_GPL(klist_next); | 262 | EXPORT_SYMBOL_GPL(klist_next); |
| 263 | |||
| 264 | |||
