Linux模块编程系列之二 熟悉特定的…
来源:互联网 发布:夜刀神十香 知乎 编辑:程序博客网 时间:2024/06/16 20:51
这些宏定义在<linux/module.h>下
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模块时,便可以用参数的形式,将具体的实参传递给模块中的那个全局变量.
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,以便决定何时可以安全的卸载模块
下面的宏用来对该usagecounter操作,usage counter可以通过/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内核模块编程之入门(二)-编写带参数的中断模块
- Linux多线程编程讲解之系列二
- linux网络编程之posix 线程(二):线程的属性和 线程特定数据 Thread-specific Data
- linux 多线程编程 ---- 信号量的使…
- 实验二:熟悉Linux的环境
- Linux云服务器初学之二 ——熟悉linux的秘钥工具
- 熟悉编程之路的前夕!~
- Linux之模块编程
- Linux驱动开发庖丁解牛之二 ——模块编程
- linux 内核模块编程之hello word(二)
- Linux 内核模块编程二
- HDOJ 2042 不容易系列之二
- 熟悉OpenGL的显示列表 计算机图形…
- Linux Shell 脚本编程之函数
- linux-2.6.14下USB驱动移植心得
- linux-2.6.14下USB驱动移植心得
- [S3C6410]USB-HOST驱动完成
- [S3C6410]USB-HOST驱动完成
- Linux模块编程系列之二 熟悉特定的…
- Linux模块编程系列之二 熟悉特定的…
- Linux2.6内核驱动移植参考
- Linux2.6内核驱动移植参考
- 设备标识及驱动程序所支持的设备(…
- 设备标识及驱动程序所支持的设备(…
- EXPORT_SYMBOL()
- EXPORT_SYMBOL()
- IOS:对表视图进行编辑
- 在fedora9中编译linux设备驱动程序…