[code]#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"); //指定代碼修訂號
[code]obj-m := hello.o KDIR:=~/linux-2.6 make -C $(KDIR) M=`pwd` modules
obj-m := hello.o說明有一個內核模塊需要從hello.o構造,生成的模塊名稱是hello.ko.
如果hello.ko是由兩個源文件生成,例如file1.c file2.c,則應該如下編寫
obj-m := hello.ko
hello-objs := file1.o file2.0
make -C $(KDIR) M=
pwdmodules 首先改變目錄到-C指定的位置(即內核源代碼目錄),其中保存有內核的頂層makefile文件, M=選項,讓該makefile在構造modules目標之前返回到模塊源代碼目錄
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目錄下 找到對應的模塊參數。