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 10struct kobject { 11 struct kref kref; 12 struct kobj_type *type; 13}; 14 15struct kobj_type { 16 void (*release)(struct kobject *); 17}; 18 19struct kobj_attribute { 20}; 21 22static inline void 23kobject_init(struct kobject *obj, struct kobj_type *type) 24{ 25 kref_init(&obj->kref); 26 obj->type = type; 27} 28 29static inline int 30kobject_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 37static inline struct kobject * 38kobject_get(struct kobject *obj) 39{ 40 if (obj != NULL) 41 kref_get(&obj->kref); 42 return (obj); 43} 44 45static inline void 46kobject_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 53static inline void 54kobject_put(struct kobject *obj) 55{ 56 if (obj != NULL) 57 kref_put(&obj->kref, kobject_release); 58} 59 60static inline void 61kobject_del(struct kobject *obj) 62{ 63} 64 65#define kobject_uevent_env(obj, act, envp) 66 67#endif 68