#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("TOPEET");
static int hello_init(void)
{
printk(KERN_EMERG "HELLO WORLD enter!\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_EMERG "HELLO WORLD exit!\n");
}
module_init(hello_init);
module_exit(hello_exit);
#include <linux/init.h>
- 包含初始化宏定义的头文件,代码中的函数module_init和module_exit在此文件中
- 入口函数module_init(x)
- 出口函数module_exit(x)
#include <linux/module.h>
- 所有的Linux 代码必须遵循GPL 协议
声明区
- MODULE_LICENSE(“Dual BSD/GPL”);声明是开源的,没有内核版本限制
- MODULE_AUTHOR(“TOPEET”);声明作者可有可无
功能区
- static int hello_init(void){};
- static void hello_exit(void){};
模块的入口和出口
- module_init(hello_init);是初始化函数
- module_exit(hello_exit);是卸载函数
用makefile编译此文件后生成KO文件,KO就是驱动模块
加载模块、查看模块、卸载模块的指令分别是insmod、lsmod和rmmod
值得注意的是,卸载时不要带.ko。例如驱动模块为mini_linux.ko,则三条指令为
- insmod mini_linux.ko
- lsmod mini_linux
- rmmod mini_linux
否则卸载不成功。