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的段中。以便在載入模塊時。提供模塊信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM