一个内核模块应当至少有两个函数,第一个为init_moudle,当模块被插入到内核时调用它;第二个为cleanup_module,当模块从内核移走时调用它。init_module其主要功能是在内核中注册一个处理某些事的处理程序。cleanup_module函数的功能是取消init_module所做的事情。
下面看一个例子“Hello,world!”。
/ * hello.c
* "Hello,world" */
/*下面是必要的头文件*/
#include <linux/kernel.h> /* 内核模块共享这个头文件 */
#include
<linux/module.h> /* 这是一个模块 */
/* 处理
CONFIG_MODVERSIONS */
#if CONFIG_MODVERSIONS==1
#define MODVERSIONS
#include <linux/modversions.h>
#endif
/*初始化模块 */
int init_module()
{
printk("Hello, world - this is a simple module\n");
/* 如果返回一个非0,那就意味着init_module失败,不能装载该内核模块*/
return 0;
}
/* 取消init_module所作的工作*/
void cleanup_module()
{
printk("the module exits the kernel\n");
}