标签:release name 协议 gpl 模块 build style 同名 编程
1. 入口
module_init(xxx);
2. 出口
module_exit(xxx);
3. 头文件
#include <linux/init.h>
#include <linux/module.h>
4. 申明许可和作者
MODULE_LICENSE("GPL");
MODULE_AUTHOR("GNB");
1 KERNEL_DIR = /lib/modules/$(shell uname -r)/build 2 PWD = $(shell pwd) 3 4 ifeq ($(KERNELRELEASE), ) 5 6 .PHONY:module clean 7 8 module: 9 $(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules 10 11 clean: 12 $(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean 13 14 else 15 16 obj-m := xxx.o 17 18 endif
1. 加载模块
$ sudo insmod xxx.ko
2. 查看模块
$ sudo lsmod | grep xxx
3. 卸载模块
$ sudo rmmod xxx
注意:Linux 不允许有同名的模块。
1. 编写一个模块,加载的时候,计算1+2+...+100,卸载的时候输出累加的结果。
1. 编写一个模块,加载的时候,计算1+2+...+n,卸载的时候输出累加的结果。
2. 带参数的模块
目的:将自己实现的函数或者全局变量,导出给别的模块使用。
方法有2种:
1. EXPORT_SYMBOL(函数名或全局变量)
2. EXPORT_SYMBOL_GPL(函数名或全局变量) ----导出的符号只允许遵从GPL协议的模块使用
练习:
A模块调用B模块中实现sum()函数。
标签:release name 协议 gpl 模块 build style 同名 编程
原文地址:http://www.cnblogs.com/gaoningbo/p/6096037.html