Linux驱动程序中比较重要的宏
来源:互联网 发布:java工程师面试简历 编辑:程序博客网 时间:2024/05/22 01:39
MODULE_DEVICE_TABLE (usb,skel_table);
这些宏定义在下
MODULE_AUTHOR(name)
定义驱动的编程者,name为string
MODULE_LICENSE(license)
定义驱动的license,一般为GPL,或相关公司的license
MODULE_DESCRIPTION(desc)
对驱动程序的描述,string
MODULE_SUPPORTED_DEVICE(name)
驱动程序所支持的设备,string
MODULE_PARM(var,type)
提供在运行时通过控制台将参数传递给模块(在insmod时)
如果我们想用这个宏来传递命令行参数,那么在我们的模块中定义一个全局变量.在insmod模块时,便可以用参数的形式,将具体的实参传递给模块中的那个全局变量.
MODULE_PARM(name,type)有两个参数,一个是这个全局变量的名称,另一个是这个全局变量的类型.
而他的类型有一下几种:
b:比特型
h:短整型
i:整型
l:长整型
s:字符串型
在传递字符串型的参数时,这个全局变量需要在模块中用Char *来声明!insmod会自动为其分配内存空间.
例如:
int a = 3;
char *st;
MODULE_PARM(a,”i”);
MODULE_PARM(st,”s”);
在insmod是我们加这样的参数:
insmode a.o “a = 3″, “st = hello world”
这里最重要的是,MODULE_PARM()也支持我们最常用的数组类型.用短线’-'把两个数字分开,分别表示数组参数中的最小位数和最大位数.例如:
int array[8];
MODULE_PARM(array,”1-8i”);
在命令行我们使用加这样的参数:
insmod a.o “array = 38745,123,4000″
在那和模块编程时,我们往往给这些全局变量以默认值,如果我们才insmod时没有传入参数时,模块会使用这些默认值,而如果我们传入参数时,这些默认值便被覆盖掉.
MODULE_PARM_DESC(var,desc)
对变量的描述
GPL_HEADER()
THIS_MODULE
指向全局变量
系统对每个模块维护一个usagecounter,以便决定何时可以安全的卸载模块
下面的宏用来对该usage counter操作,usagecounter可以通过/proc/modules
文件查看
MOD_INC_USE_COUNT
MOD_DEC_USE_COUNT
MOD_IN_USE
MODULE_DEVICE_TABLE
EXPORT_SYMTAB
预处理宏,当在程序中用EXPORT_SYMBOL等宏时需要定义该宏。例如,可以在Makefile中定义:-DEXPORT_SYMTAB
__EXPORT_SYMBOL(sym,str)
EXPORT_SYMBOL(var)
EXPORT_SYMBOL_NOVERS(var)
导出一个符合到内核符号表,导出后,该符合可以供其他模块使用。这个宏有助于编写驱动程序时清楚的划分出层次。可以通过/proc/ksyms文件或ksyms命令查看内核符号表。EXPORT_SYMBOL_NOVERS(var),导出是不带版本信息。在使用该宏时,需定义
EXPORT_SYMBOL_GPL(var)
EXPORT_NO_SYMBOLS
显示指出,该模块不向内核符合表导出符号
SET_MODULE_OWNER- Linux驱动程序中比较重要的宏
- Linux驱动程序中比较重要的宏
- Linux驱动程序中比较重要的宏
- Linux驱动程序中比较重要的宏
- Linux驱动程序中比较重要的宏
- Unix和Linux中比较重要的设备文件
- 【Linux设备驱动程序(第三版)】----重要的数据结构
- SQL中比较重要的语句总结
- c# ListView中比较重要的属性
- android中比较重要的API:getSystemService
- JDK中比较重要的包
- linux netfilter框架中比较重要的结构体和函数
- 比较重要的算法
- arm linux中一些重要的宏及地址定义
- arm linux中一些重要的宏及地址定义
- arm linux中一些重要的宏及地址定义
- arm linux中一些重要的宏及地址定义
- arm linux中一些重要的宏及地址定义
- VxWorks内核实现基本原理
- VxWorks 基本启动方式
- VxWorks 基本启动方式
- VxWorks 操作系统内存布局
- VxWorks 操作系统内存布局
- Linux驱动程序中比较重要的宏
- Linux驱动程序中比较重要的宏
- 算法导论第四章最后思考题
- USB枚举过程的详细分析<转>
- USB枚举过程
- LINUX下USB1.1设备学习小记(2)_协…
- USB枚举过程
- 带环的链表
- LINUX下USB1.1设备学习小记(2)_协…