10.5.1简单内核模块的编写

一个内核模块应当至少有两个函数,第一个为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");

}