MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE宏
来源:互联网 发布:矩阵范数 编辑:程序博客网 时间:2024/05/17 10:26
在阅读Linux Driver源代码时,我们经常会在文件的结尾处看到诸如:MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE等宏定义,这些宏主要是定义了一些模块信息。但这些模块信息具体是怎么加到模块里的?就需要深入分析一下这些宏定义具体是怎么定义的。下面我们以MODULE_AUTHOR为例,来具体分析一下有关module信息的宏。
首先,我门来看一下MODULE_AUTHOR()宏的定义:
#define MODULE_AUTHOR(_author) MODULE_INFO(author, _author)
#define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
#define __MODULE_INFO(tag, name, info) \
static const char __UNIQUE_ID(name)[] \
__used __attribute__((section(".modinfo"), unused, aligned(1))) \
= __stringify(tag) "=" info
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
#define ___PASTE(a,b) a##b
#define __PASTE(a,b) ___PASTE(a,b)
到这里,关于MODULE_AUTHOR()宏的所有定义已经全部展开,下面我们以一个实例来说明MODULE_AUTHOR的用法。
例如:MODULE_AUTHOR("Dennis")
展开后变为:
static const char __UNIQUE_ID_Dennis0[]
__used__attribute__((section(".modinfo"), unused, aligned(1)))
= "author"“=”“Dennis”
所以,展开后,我们可以发现,其实MODULE_AUTHOR宏其实是定义了一个以参数__author为标识符的一部分的字符数组。且将此变量放在.modinfo的段中。以便在加载模块时,提供模块信息。
- MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE宏
- MODULE_DEVICE_TABLE MODULE_AUTHOR(name) MODULE_LICENSE(license)
- MODULE_LICENSE
- 模块的许可证声明 - MODULE_LICENSE(“GPL”)
- MODULE_LICENSE没有写引起的问题
- LINUX KO中加MODULE_LICENSE("GPL")
- 编写模块时的声明(含MODULE_LICENSE等)
- 编写模块时的声明(含MODULE_LICENSE等)
- 宏
- 宏
- ##宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- 宏
- OCP 1Z0 053 235
- makefile语法
- axis2开发webservice教程
- Go 字符串格式化
- MYSQL入门学习之二十一:MYSQL用户管理
- MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE宏
- android开发中用到的px、dp、sp
- 正则匹配中文字符
- C程序两则
- poj1273Drainage Ditches最大流[dinic算法]
- MYSQL入门学习之二十二:MySQL物理文件 之 日志文件
- uva 10305(拓扑)
- C++ Primer Plus的若干收获--(十一)
- HTTP Header 详解