Welcome 微信登录

首页 / 操作系统 / Linux / Linux的initcalls调用机制

只要看看 include/linux/init.h中的定义就清楚了: #define core_initcall(fn)        __define_initcall("1",fn)#define postcore_initcall(fn)        __define_initcall("2",fn)#define arch_initcall(fn)        __define_initcall("3",fn)#define subsys_initcall(fn)            __define_initcall("4",fn)#define fs_initcall(fn)                     __define_initcall("5",fn)#define device_initcall(fn)           __define_initcall("6",fn)#define late_initcall(fn)         __define_initcall("7",fn) #define __initcall(fn) device_initcall(fn)#define console_initcall(fn) /       static initcall_t __initcall_##fn /       __attribute_used__ __attribute__((__section__(".con_initcall.init")))=fn#define security_initcall(fn) /       static initcall_t __initcall_##fn /       __attribute_used__ __attribute__((__section__(".security_initcall.init"))) = fn #define module_init(x)   __initcall(x);  //modlue的级别是6链接的时候按下面的顺序链接: __initcall_start = .;   *(.initcall1.init)   *(.initcall2.init)   *(.initcall3.init)   *(.initcall4.init)   *(.initcall5.init)   *(.initcall6.init)   *(.initcall7.init)  __initcall_end = .;因此,在do_initcalls的时候就按照前面的顺序来了。其中 console_initcall等这些则是定义在专门的section中的。比如console_initcall就是定义在:__con_initcall_start与__con_initcall_end这个section中。Linux下的实时流媒体编程(RTP,RTCP,RTSP)Linux Shell基础命令相关资讯      Linux知识 
  • 时光总是太匆匆!Linux已经诞生23  (08/29/2014 14:12:03)
  • Linux虚拟文件系统之文件打开(sys  (02/14/2012 11:41:54)
  • 2012 年 Linux 峰会时间表  (02/14/2012 06:47:27)
  • 报告称当前 Linux 人才抢手 高薪也  (02/15/2012 06:35:56)
  • 解析企业为何选择Linux及其特别之  (02/14/2012 08:17:59)
  • Linux禁用字符闪烁的方法  (11/02/2011 10:28:25)
本文评论 查看全部评论 (0)
表情: 姓名: 字数