module_obj笔记
module_obj实际调用是modinfo。modinfo是QEMU模块系统中用于收集和生成模块元数据的工具和流程。MODINFO_START 和 MODINFO_END 这样的宏用于标记模块元数据的开始和结束,而 modinfo-collect.py 和 modinfo-generate.py 脚本则负责提取这些信息并生成数据库,供QEMU使用。开发者可以通过检查 *.modinfo 和 modinfo.c 文件来验证结果。编译加上-DQEMU_MODINFO选项开启此功能。
1、module_obj宏展开
#define module_obj(name) modinfo(obj, name)
2、modinfo的宏展开,一般不会加上-DQEMU_MODINFO的宏定义
#ifdef QEMU_MODINFO
# define modinfo(kind, value) \MODINFO_START kind value MODINFO_END
#else
# define modinfo(kind, value)
#endif
比如:module_obj("qxl"); 宏展开一般是空
3、module_xxx情况类似
#define module_dep(name) modinfo(dep, name)
#define module_arch(name) modinfo(arch, name)
#define module_opts(name) modinfo(opts, name)
#define module_kconfig(name) modinfo(kconfig, name)