在写内核驱动或分析驱动时总是从module_init和module_exit开始的,一直都知道这是个驱动程序初始化的函数,也没去多想它,今天分析了下驱动究竟是何时加载到内核中的呢?结果发现还是得从这个函数入手
首先函数定义 include/linux/init.h
#ifndef MODULE
...
#define module_init(x) __initcall(x);
...
else
...
#define module_init(initfn) \
static inline initcall_t __inittest(void) \
{ return initfn; } \
int init_module(void) __attribute__((alias(#initfn)));
...
#endif