1.思维导图
2.使用Makefile编译内核模块
Makefile文件:
如果有多个c文件:
obj-m:=test.o(要生成的目标文件)
test-objs:= hello.o simple.o
KDIR:=所依赖内核源代码路径
写完Makefile之后在terminal运行“make”编译
3.安装与卸载
² 安装insmod
² 卸载rmmod
² 查看lsmod
4.可选模块信息
4.1模块声明
² MODULE_LICENSE(“遵守的协议”) 可选协议:GPL,GPLv2
² MODULE_AUTHOR(“作者”)
² MODULE_DESCRIPTION(“模块的功能描述”)
² MODULE_VERSION(“v1.0”)
4.2模块参数
通过宏module_param指定保存模块参数的变量。模块参数用于在加载模块时残敌参数给模块。
modul_param(name,type,perm)
perm是permission,权限,有两个取值:S_IRUGO,读权限,S_IWUSR,写权限
4.3 符号导出
² EXPORT_SYMBOL()
² EXPORT_SYMBOL_GPL() 只能用于包含GPL许可证的模块
5.内核打印(有优先级的概念,0最高,默认级别是4)
printk(KERN_EMERG“a is %d \n”,a);