/* Each module must use one module_init(). */
#define module_init(initfn) \
static inline initcall_t __inittest(void) \
{ return initfn; } \
int init_module(void) __attribute__((alias(#initfn)));
答案 0 :(得分:4)
在编译期间检查生成的__inittest()
函数的唯一目的是传递给module_init()
宏的函数与initcall_t
类型兼容。
所有模块初始化函数必须符合类型,因为(从init_module()
定义可以看出)它们不是直接调用的,而是通过特殊别名init_module()
调用的。