kset
void kset_init(struct kset *kset);
int kset_register(struct kset *kset);
void kset_unregister(struct kset *kset);
struct kset * kset_create_and_add(const char *name,
static inline struct kset *
return container_of(kobj, struct kset, kobj);
static inline struct kset *
kset_get(struct kset *kset)
if (kset != NULL) {
kobj = kobject_get(&kset->kobj);
kset_put(struct kset *kset)
if (kset != NULL)
kobject_put(&kset->kobj);
struct kset;
struct kset *kset;
if (kobj->kset != NULL) {
kobj->parent = &kobj->kset->kobj;
static struct kset *
struct kset *kset;
kset = kzalloc(sizeof(*kset), GFP_KERNEL);
if (kset == NULL)
kset->uevent_ops = uevent_ops;
kobject_set_name(&kset->kobj, "%s", name);
kset->kobj.parent = parent_kobj;
kset->kobj.kset = NULL;
return (kset);
kset_init(struct kset *kset)
kobject_init(&kset->kobj, &linux_kset_kfree_type);
INIT_LIST_HEAD(&kset->list);
spin_lock_init(&kset->list_lock);
struct kset *kset;
kset = kobj->kset;
if (kset == NULL)
kset_get(kobj->kset);
spin_lock(&kset->list_lock);
list_add_tail(&kobj->entry, &kset->list);
spin_unlock(&kset->list_lock);
struct kset *kset;
kset = kobj->kset;
if (kset == NULL)
spin_lock(&kset->list_lock);
spin_unlock(&kset->list_lock);
kset_put(kobj->kset);
struct kset *
struct kset *kset;
kset = kset_create(name, u, parent_kobj);
if (kset == NULL)
ret = kset_register(kset);
linux_kobject_kfree_name(&kset->kobj);
kfree(kset);
return (kset);
kset_register(struct kset *kset)
if (kset == NULL)
kset_init(kset);
ret = kobject_add_complete(&kset->kobj);
kset_unregister(struct kset *kset)
if (kset == NULL)
kobject_del(&kset->kobj);
kobject_put(&kset->kobj);
struct kset *kset;
kset = to_kset(kobj);
kfree(kset);