summaryrefslogtreecommitdiffstats
path: root/include/linux/kobj_completion.h
diff options
context:
space:
mode:
authorJeff Mahoney <jeffm@suse.com>2013-09-11 13:00:30 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-09-26 16:17:33 -0700
commiteee031649707db3c9920d9498f8d03819b74fc23 (patch)
tree439bd4f3db8c3f4342a85b93a6cec1c8db4e524c /include/linux/kobj_completion.h
parent1296fc02c22cb8bc0cde34fbd1336d1a8d76f1e1 (diff)
downloadtalos-obmc-linux-eee031649707db3c9920d9498f8d03819b74fc23.tar.gz
talos-obmc-linux-eee031649707db3c9920d9498f8d03819b74fc23.zip
kobject: introduce kobj_completion
A common way to handle kobject lifetimes in embedded in objects with different lifetime rules is to pair the kobject with a struct completion. This introduces a kobj_completion structure that can be used in place of the pairing, along with several convenience functions for initialization, release, and put-and-wait. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/kobj_completion.h')
-rw-r--r--include/linux/kobj_completion.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/kobj_completion.h b/include/linux/kobj_completion.h
new file mode 100644
index 000000000000..a428f6436063
--- /dev/null
+++ b/include/linux/kobj_completion.h
@@ -0,0 +1,18 @@
+#ifndef _KOBJ_COMPLETION_H_
+#define _KOBJ_COMPLETION_H_
+
+#include <linux/kobject.h>
+#include <linux/completion.h>
+
+struct kobj_completion {
+ struct kobject kc_kobj;
+ struct completion kc_unregister;
+};
+
+#define kobj_to_kobj_completion(kobj) \
+ container_of(kobj, struct kobj_completion, kc_kobj)
+
+void kobj_completion_init(struct kobj_completion *kc, struct kobj_type *ktype);
+void kobj_completion_release(struct kobject *kobj);
+void kobj_completion_del_and_wait(struct kobj_completion *kc);
+#endif /* _KOBJ_COMPLETION_H_ */
OpenPOWER on IntegriCloud