内核模块有如下特点:
1。模块本身不被编译进内核映像(zImage/bzImage)
2。模块一旦被动态加入到内核就和内核其他部分一样。
3。可以根据需要,在内核运行期间动态安装/卸载。
一个简单的模块。
#define __KERNEL__
#define MODULE //这两宏一不定要加入
#include
#include
#include
static int year=2010; //模块参数
MODULE_LICENSE("GPL"); //许可证
MODULE_PARM(year,"i");
int hello_init(void)
{
printk("<0>Hello World!%d\n",year); //《0》表示打印的优先级
return 0;
}
void hello_exit(void)
{
printk("<6>hello exit%d\n",year);
}
module_init(hello_init); //指定模块加载函数
module_exit(hello_exit); //指定模块卸载函数
模块的编译工作由gcc -c 命令来完成
如
Gcc -c -I/usr/src/linux-2.4/include hello.c
注以开是在红帽9下开发。。。。
阅读(684) | 评论(1) | 转发(0) |