Linux内核模块的编程方法

2008-04-09 04:02:10来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Linux环境下使用过C语言编过程序,其大多数都属于用户应用程序,也称为普通用户程序。写了这么多应用程序后,就有点儿想写一点系统级的程序了,于是就参考了一些关于Linux内核编程原理的资料,并付之了实践,现在就让我将编写内核模块的方法给大家介绍一下吧.

  一个Linux内核模块至少需要包括以下两个函数:
  1.模块初始化函数——当模块被插入到Linux内核中时被调用;
  2.模块卸载函数——当模块从Linux内核中被卸载时被调用。

  一般来说,模块初始化函数给新模块在内核中注册,并且得到一个调用句柄;或者它使新模块的代码覆盖原有的代码(通常情况下新模块的代码增加了一些新功能,然后调用原有的代码)。
  而模块卸载函数正好做了模块初始化函数相反的工作,它使新模块安全地被卸载。

  下面我们来看看如何在Linux内核中插入一个模块,让其在屏幕上输出“Hello , this is module speaking!”的字样。

程序文件:hello.c

#include $#@60;linux/kernel.h$#@62; /* 我们正在干一些关于内核的事情 */
#include $#@60;linux/module.h$#@62; /* 具体来说,是在写一个模块 */

#if CONFIG_MODVERSIONS==1 /* 如果需要指明模块的版本的话 */
#define MODVERSIONS
#include $#@60;linux/modversions.h$#@62; /* 那就将linux/modversions.h文件包含*/
#endif

int init_module() /* 模块初始化函数 */
{
printk("Hello, this is the kernel speaking!\ n");
/* 如果我们将返回值置为非零,这说明初始化模块失败 */
return 0;
}

void cleanup_module() /* 模块卸载函数 */
{
printk(“ This kernel module has been removed.\ n");
}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:质量管理的八项原则和十三项步骤

下一篇:我们是否需要软件工程