diff options
author | Jeff Mahoney <jeffm@suse.com> | 2013-09-11 13:00:30 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-09-26 16:17:33 -0700 |
commit | eee031649707db3c9920d9498f8d03819b74fc23 (patch) | |
tree | 439bd4f3db8c3f4342a85b93a6cec1c8db4e524c /include/linux/kobj_completion.h | |
parent | 1296fc02c22cb8bc0cde34fbd1336d1a8d76f1e1 (diff) | |
download | talos-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.h | 18 |
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_ */ |