#include <linux/module.h> #include <linux/init.h> #include <linux/moduleparam.h> #define DRIVER_AUTHOR "LeslieChu" #define DRIVER_DESC "test hello module" #define VERSION "1.0.0" #define ALIAS "HeiMod" #define LICENSE "GPL" /*导出模块变量*/ int abc = 3; int i = 0; module_param(abc,int,S_IRUGO); /*定义模块信息,通过modinfo查看*/ MODULE_LICENSE(LICENSE); MODULE_AUTHOR(DRIVER_AUTHOR ); MODULE_DESCRIPTION(DRIVER_DESC ); MODULE_VERSION(VERSION); MODULE_ALIAS(ALIAS); /*加载模块*/ static int __init first_init (void) { printk("the first mode insmod\n"); for(i=0;i<abc;i++) printk("the i is : %d\n",i); return 0; } /*导出模块函数符号*/ static void haha(void) { for(i=0;i<abc;i++) printk("+++++i=%d\n",i); } /*卸载模块*/ static void __exit first_exit (void) { printk("the first mode rmmod\n"); } /*注册模块*/ module_init(first_init); module_exit(first_exit); EXPORT_SYMBOL(haha);
Makefile:
KERNELDIR=/usr/src/linux-headers-3.2.0-30-generic #/usr/src/linux-headers-$(uname -r) PWD:=$(shell pwd) obj-m:=hello.o default: make -C $(KERNELDIR) M=$(PWD) modules clean: rm -rf *.o .cmd *.ko *.mod.c .tmp_versions *.order *.sym*
安装 模块:insmod hello.ko
卸载模块: rmmod hello
查看模块安装卸载的log:tail /var/log/kernel.log -n 10