1 /* Public domain. */
2
3 #ifndef _LINUX_KOBJECT_H
4 #define _LINUX_KOBJECT_H
5
6 #include <linux/kref.h>
7 #include <linux/sysfs.h>
8 #include <linux/container_of.h>
9
10 struct kobject {
11 struct kref kref;
12 struct kobj_type *type;
13 };
14
15 struct kobj_type {
16 void (*release)(struct kobject *);
17 };
18
19 struct kobj_attribute {
20 };
21
22 static inline void
kobject_init(struct kobject * obj,struct kobj_type * type)23 kobject_init(struct kobject *obj, struct kobj_type *type)
24 {
25 kref_init(&obj->kref);
26 obj->type = type;
27 }
28
29 static inline int
kobject_init_and_add(struct kobject * obj,struct kobj_type * type,struct kobject * parent,const char * fmt,...)30 kobject_init_and_add(struct kobject *obj, struct kobj_type *type,
31 struct kobject *parent, const char *fmt, ...)
32 {
33 kobject_init(obj, type);
34 return (0);
35 }
36
37 static inline struct kobject *
kobject_get(struct kobject * obj)38 kobject_get(struct kobject *obj)
39 {
40 if (obj != NULL)
41 kref_get(&obj->kref);
42 return (obj);
43 }
44
45 static inline void
kobject_release(struct kref * ref)46 kobject_release(struct kref *ref)
47 {
48 struct kobject *obj = container_of(ref, struct kobject, kref);
49 if (obj->type && obj->type->release)
50 obj->type->release(obj);
51 }
52
53 static inline void
kobject_put(struct kobject * obj)54 kobject_put(struct kobject *obj)
55 {
56 if (obj != NULL)
57 kref_put(&obj->kref, kobject_release);
58 }
59
60 static inline void
kobject_del(struct kobject * obj)61 kobject_del(struct kobject *obj)
62 {
63 }
64
65 #define kobject_uevent_env(obj, act, envp)
66
67 #endif
68