insmod 001_kobject.ko #加载驱动,必须使用root用户
dmesg | tail #查看驱动加载情况
rmmod 001_kobject #卸载驱动,必须使用root用户
dmesg | tail #查看驱动卸载情况
lsmod
ls /sys
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/kobject.h>
struct kobject *o1;
struct kobject *o2;
struct kobject *o3;
struct kobj_type kt;
// 模块加载时调用的函数
static int my_kobject_init(void)
{
int ret;
o1 = kobject_create_and_add("myobject01",NULL);
o2 = kobject_create_and_add("myobject02",o1);
//创建方式二
o3 = kzalloc(sizeof(struct kobject),GFP_KERNEL);
ret=kobject_init_and_add(o3,&kt,NULL,"%s","myobject03");
return 0; // 返回 0 表示加载成功
}
// 模块卸载时调用的函数
static void my_kobject_exit(void)
{
kobject_put(o1);
kobject_put(o2);
kobject_put(o3);
printk("Goodbye, World! Driver unloaded.\n");
}
// 注册模块的入口和出口函数
module_init(my_kobject_init);
module_exit(my_kobject_exit);
// 模块许可证声明,必须是 GPL 兼容的许可证才能加载到内核中
MODULE_LICENSE("GPL");
// 模块作者信息
MODULE_AUTHOR("wyl");
// 模块描述
MODULE_DESCRIPTION("kobject");