MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE宏

在阅读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的段中。以便在加载模块时,提供模块信息。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<?xml version="1.0" encoding="utf-8" ?> - <install type="module" version="1.5"> <name>DOCman Ultimate Download Module</name> <author>Ahmad Alfy</author> <creationDate>9th March 2009</creationDate> <copyright>(C) 2009</copyright> <license>Non-Commercial</license> <authorEmail>[email protected]</authorEmail> <authorUrl>www.alfystudio.com</authorUrl> <version>1.5</version> <description>Use DOCman Ultimate Download Module to better display your documents.</description> - <files> <filename module="mod_docman_ult">mod_docman_ult.php</filename> </files> - <params> <param name="moduleclass_sfx" type="text" default="" label="Module Class Suffix" description="A suffix to be applied to the css class of the module (table.moduletable), this allows individual module styling" /> <param name="@spacer" type="spacer" default="" label="" description="" /> <param name="limits" type="text" default="3" label="Limits" description="number of downloads to display" /> <param name="@spacer" type="spacer" default="" label="" description="" /> - <param name="link" type="list" default="details" label="Link" description="Where the document link should go"> <option value="details">Details</option> <option value="download">Download</option> <option value="category">Category</option> </param> - <param name="sortby" type="list" default="date" label="Sort By" description="Sort by"> <option value="date">Date</option> <option value="dmcounter">Hits</option> <option value="dmname">Title</option> </param> <param name="@spacer" type="spacer" default="" label="" description="" /> - <param name="order" type="radio" default="desc" label="Order" description="Order"> <option value="asc">Ascending</option> <option value="desc">Descending</option> </param> - <param name="show_icon" type="radio" default="1" label="Show icon" description="displays a generic icon near the name of the document"> <option value="0">No</option> <option value="1">Yes</option> </param> - <param name="show_hits" type="radio" default="1" label="Show hits" description="displays how many times the document was downloaded"> <option value="0">No</option> <option value="1">Yes</option> </param> - <param name="show_category" type="radio" default="1" label="Show category" description="displays the category of the document"> <option value="0">No</option> <option value="1">Yes</option> </param> </params> </install>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值