MODULE_AUTHOR
MODULE_LICENSE
MODULE_DESCRIPTION
MODULE_FIRMWARE
MODULE_FIRMWARE是指定将firmware=”filepath”的字符串信息放到.modinfo段
/* QCA6174 3.1 firmware files */
MODULE_FIRMWARE(QCA6174_HW_3_0_FW_DIR "/" ATH10K_FW_API4_FILE);
MODULE_FIRMWARE(QCA6174_HW_3_0_FW_DIR "/" ATH10K_FW_API5_FILE);
MODULE_FIRMWARE(QCA6174_HW_3_0_FW_DIR "/" QCA6174_HW_3_0_BOARD_DATA_FILE);
MODULE_FIRMWARE(QCA6174_HW_3_0_FW_DIR "/" ATH10K_BOARD_API2_FILE);
//--------------<linux/module.h>---------------
#define MODULE_FIRMWARE(_firmware) MODULE_INFO(firmware, _firmware)
/* Generic info of form tag = "info" */
#define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
//-------------<linux/moduleparam.h>------------
#define __MODULE_INFO(tag, name, info) \
static const char __UNIQUE_ID(name)[] \
__used __attribute__((section(".modinfo"), unused, aligned(1))) \
= __stringify(tag) "=" info
其中__stringify()这个函数说明一下:
#define __stringify_1(x...) #x
#define __stringify(x...) __stringify_1(x)
这里用了两层宏去定义__stringify(),因为如果直接定义#define __stringify(x) #x
,那么如果遇到x也是宏定义的情况,比如#define AA bb
,那么__stringify(AA)展开为”AA”
而使用两层去定义__stringify(),那么__stringify(AA)将展开为bb