linux驱动入口函数module_init何时被调用

linux驱动入口函数module_init何时被调用

被上面的宏处理过后,变成__initcall_func6 __used加入到内核映像的".initcall"区。内核的加载的时候,会搜索".initcall"中的所有条目,并按优先级加载它们,普通驱动程序的优先级是6。其它模块优先级列出如下:值越小,越先加载。

 
#define pure_initcall(fn)           __define_initcall("0",fn,0)  
  
#define core_initcall(fn)            __define_initcall("1",fn,1)  
  
#define core_initcall_sync(fn)          __define_initcall("1s",fn,1s)  
  
#define postcore_initcall(fn)             __define_initcall("2",fn,2)  
  
#define postcore_initcall_sync(fn)  __define_initcall("2s",fn,2s)  
  
#define arch_initcall(fn)            __define_initcall("3",fn,3)  
  
#define arch_initcall_sync(fn)          __define_initcall("3s",fn,3s)  
  
#define subsys_initcall(fn)                 __define_initcall("4",fn,4)  
  
#define subsys_initcall_sync(fn)      __define_initcall("4s",fn,4s)  
  
#define fs_initcall(fn)                          __define_initcall("5",fn,5)  
  
#define fs_initcall_sync(fn)               __define_initcall("5s",fn,5s)  
  
#define rootfs_initcall(fn)                  __define_initcall("rootfs",fn,rootfs)  
  
#define device_initcall(fn)                 __define_initcall("6",fn,6)  
  
#define device_initcall_sync(fn)       __define_initcall("6s",fn,6s)  
  
#define late_initcall(fn)             __define_initcall("7",fn,7)  
  
#define late_initcall_sync(fn)           __define_initcall("7s",fn,7s)  
from:
https://www.jianshu.com/p/a783474efb44


原文地址:https://www.cnblogs.com/aspirs/p/15251397.html