summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormochel@digitalimplant.org <mochel@digitalimplant.org>2005-03-24 12:58:57 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2005-06-20 15:15:17 -0700
commit8b0c250be489dcbf1a3a33bb4ec4c7f33735a365 (patch)
tree17935d1064101df10ad7bb2f7ed94e6a88af295c
parent2287c322b61fced7e0c326a1a9606aa73147e3df (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.h2
-rw-r--r--lib/klist.c16
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);
extern void klist_del(struct klist_node * n);
extern void klist_remove(struct klist_node * n);
+extern int klist_node_attached(struct klist_node * n);
+
struct klist_iter {
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)
struct klist_node * n = container_of(kref, struct klist_node, n_ref);
list_del(&n->n_node);
complete(&n->n_removed);
+ n->n_klist = NULL;
}
static int klist_dec_and_del(struct klist_node * n)
@@ -154,6 +155,19 @@ EXPORT_SYMBOL_GPL(klist_remove);
/**
+ * klist_node_attached - Say whether a node is bound to a list or not.
+ * @n: Node that we're testing.
+ */
+
+int klist_node_attached(struct klist_node * n)
+{
+ return (n->n_klist != NULL);
+}
+
+EXPORT_SYMBOL_GPL(klist_node_attached);
+
+
+/**
* klist_iter_init_node - Initialize a klist_iter structure.
* @k: klist we're iterating.
* @i: klist_iter we're filling.
@@ -246,3 +260,5 @@ struct klist_node * klist_next(struct klist_iter * i)
}
EXPORT_SYMBOL_GPL(klist_next);
+
+