标签:
#include<linux/init.h>
#include<linux/module.h>
static int __init hello_init(void) //内核初始化函数
{
printk("hello world!\n"); //打印函数,和prinft类似
return 0;
}
static void __exit hello_exit(void)//内核清除函数
{
printk("good bye!\n");
}
module_init(hello_init); //指定初始化函数
module_exit(hello_exit); //指定清除函数
MODULE_LICENSE("GPL"); //指定代码使用的许可证
MODULE_AUTHOR("laowu"); //指定作者
MODULE_VERSION("1.0"); //指定代码修订号
obj-m += hello.o
KDIR:=~/linux-2.6
make -C $(KDIR) M=`pwd` modules
pwd
modules insmod hello.ko
module_param函数使用方法:
module_param(name, type, perm)
name:内核参数的名称,自己定义;
type:内核参数的类型,常见的类型byte、short、int、long、ulong、bool 、charp(字符指针);
perm:内核参数的权限S_IRUGO(对模块参数具有读权限)。其实权限和文件的 权限差不多
内核加载模块时传递参数的方法:
使用命令:insmod xxx.ko a=1
模块加载后,并且他的权限不为0,就可在/sys/module/xxx/parameter目录下 找到对应的模块参数。
使用EXPORT_SYMBOL将函数导出,供其他模块使用;在”/proc/kallsyms”文件中对应这符号表,它记录了函数的符号和函数在内存所在的地址。
标签:
原文地址:http://blog.csdn.net/feitian944/article/details/51344204