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