Linux设备驱动之第 2 章 预备知识

本文介绍了Linux内核模块编程的基础知识,包括必要的头文件引入、模块许可声明方式、模块描述符的使用等内容,并列举了常见的许可证类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.6. 预备知识

        内核是一个特定的环境,对需要和它接口的代码有自己的一些要求。大部分内核代码中都要包含相当数量的头文件,以便获得函数、数据类型和变量的定义。有几个头文件是用于模块的,必须出现在每个可装载的模块中。所有的模块代码中都包含下面两行代码:

#include <linux/init.h>

#include <linux/module.h>

linux/module.h包含有可装载模块需要的大量符号和函数的定义。linux/init.h包含指定初始化和清除函数。大部分模块还包含 linux/moudleparam.h头文件,这样,就可以在装载模块时向模块传递参数。尽管不是严格要求的,但模块应该指定代码所使用的许可证。只需包含MODULE_LICENSE行:

MODULE_LICENSE("GPL");

        内核能够识别的许可证有 "GPL"( 适用 GNU 通用公共许可的任何版本 ),"GPL v2"( 只适用 GPL 版本 2 ),"GPL and additional rights(GPL及附加权利)","Dual BSD/GPL(BSD/GPL双重许可证)","Dual MPL/GPL(MPL/GPL双重许可证)"以及"Proprietary(专有)"。如果一个模块没有显示地标记为上述内核可识别的许可证,则会被假定是专有的,而内核装载这种模块就会被污染。

        可在模块中包含的其它描述性定义包括 MODULE_AUTHOR ( 描述模块作者)、MODULE_DESCRIPION(用来说明模块用途的简短描述)、MODULE_VERSION(代码修订号)、MODULE_ALIAS(模块别名)以及MODULE_DEVICE_TABLE(用来告诉内核空间模块支持的设备)。

        上述MODULE_声明可出现在源文件中源代码函数以外的任何地方。但新近的内核编码习惯是将这些声明放在文件的最后。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值