0
点赞
收藏
分享

微信扫一扫

<linux/module.h>

ivy吖 2022-10-31 阅读 2


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


举报

相关推荐

0 条评论