/*
* kobject example
*/
#include <linux/kobject.h>
#include <linux/module.h>
#include <linux/init.h>
static struct kobject *kobj_a;
static struct kobject *kobj_a1;
static struct kobject *kobj_a2;
static int __init example_init(void)
{
/* Create kobject "ko_a" under /sys/kernel/ */
kobj_a = kobject_create_and_add("ko_a", kernel_kobj);
if (!kobj_a)
goto err;
/* Create kobject "ko_a1" under /sys/kernel/ko_a/ */
kobj_a1 = kobject_create_and_add("ko_a1", kobj_a);
if (!kobj_a1)
goto err_a1;
/* Create kobject "ko_a2" under /sys/kernel/ko_a/ */
kobj_a2 = kobject_create_and_add("ko_a2", kobj_a);
if (!kobj_a2)
goto err_a2;
return 0;
err_a2:
kobject_put(kobj_a1);
err_a1:
kobject_put(kobj_a);
err:
return -EINVAL;
}
static void __exit example_exit(void)
{
kobject_put(kobj_a2);
kobject_put(kobj_a1);
kobject_put(kobj_a);
}
module_init(example_init);
module_exit(example_exit);
MODULE_LICENSE("GPL");