/* 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)));
最佳答案
生成的__inittest()
函数的唯一目的是在编译时检查传递给module_init()
宏的函数是否与initcall_t
类型兼容。
所有模块初始化函数都必须符合类型,因为(从init_module()
定义可以看出)它们不是直接调用的,而是通过特殊的别名init_module()
调用的。