MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE宏

來源:互聯網
上載者:User

標籤:原始碼   linux核心   

在閱讀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的段中。以便在載入模組時,提供模組資訊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.