zoukankan      html  css  js  c++  java
  • linux内核initcall

    include/linux/init.h

    #define pure_initcall(fn)        __define_initcall(fn, 0)
    
    #define core_initcall(fn)        __define_initcall(fn, 1)
    #define core_initcall_sync(fn)        __define_initcall(fn, 1s)
    #define postcore_initcall(fn)        __define_initcall(fn, 2)
    #define postcore_initcall_sync(fn)    __define_initcall(fn, 2s)
    #define arch_initcall(fn)        __define_initcall(fn, 3)
    #define arch_initcall_sync(fn)        __define_initcall(fn, 3s)
    #define subsys_initcall(fn)        __define_initcall(fn, 4)
    #define subsys_initcall_sync(fn)    __define_initcall(fn, 4s)
    #define fs_initcall(fn)            __define_initcall(fn, 5)
    #define fs_initcall_sync(fn)        __define_initcall(fn, 5s)
    #define rootfs_initcall(fn)        __define_initcall(fn, rootfs)
    #define device_initcall(fn)        __define_initcall(fn, 6)
    #define device_initcall_sync(fn)    __define_initcall(fn, 6s)
    #define late_initcall(fn)        __define_initcall(fn, 7)
    #define late_initcall_sync(fn)        __define_initcall(fn, 7s)
    #define __define_initcall(fn, id) 
        static initcall_t __initcall_##fn##id __used 
        __attribute__((__section__(".initcall" #id ".init"))) = fn

    /arch/arm/kernel/vmlinux.lds

    .init.data : {
       *(.init.data) *(.meminit.data) *(.init.rodata) . = ALIGN(8); __start_ftrace_events = .; *(_ftrace_events) __stop_ftrace_events = .; *(.meminit.    rodata) . = ALIGN(8); __clk_of_table = .; *(__clk_of_table) *(__clk_of_table_end) . = ALIGN(8); __clksrc_of_table = .; *(__clksrc_of_table) *(__c    lksrc_of_table_end) . = ALIGN(32); __dtb_start = .; *(.dtb.init.rodata) __dtb_end = .; . = ALIGN(8); __irqchip_begin = .; *(__irqchip_of_table) *    (__irqchip_of_end)
       . = ALIGN(16); __setup_start = .; *(.init.setup) __setup_end = .;
       __initcall_start = .; *(.initcallearly.init) __initcall0_start = .; *(.initcall0.init) *(.initcall0s.init) __initcall1_start = .; *(.initcall1.    init) *(.initcall1s.init) __initcall2_start = .; *(.initcall2.init) *(.initcall2s.init) __initcall3_start = .; *(.initcall3.init) *(.initcall3s.i    nit) __initcall4_start = .; *(.initcall4.init) *(.initcall4s.init) __initcall5_start = .; *(.initcall5.init) *(.initcall5s.init) __initcallrootfs    _start = .; *(.initcallrootfs.init) *(.initcallrootfss.init) __initcall6_start = .; *(.initcall6.init) *(.initcall6s.init) __initcall7_start = .;     *(.initcall7.init) *(.initcall7s.init) __initcall_end = .;
       __con_initcall_start = .; *(.con_initcall.init) __con_initcall_end = .;
       __security_initcall_start = .; *(.security_initcall.init) __security_initcall_end = .;
       . = ALIGN(4); __initramfs_start = .; *(.init.ramfs) . = ALIGN(8); *(.init.ramfs.info)
    }
  • 相关阅读:
    cocos2d-x于android在call to OpenGL ES API with no current context
    C# 6.0 (C# vNext) 的新功能:Exception-Handling Improvements
    既然知识都会遗忘,我们为什么要学习?
    进程(线程)间通信与网络通信的联系与比较
    网络通信要素与总结
    android和IOS长连接区别
    TCP socket如何判断连接断开
    application/json 四种常见的 POST 提交数据方式
    TCP和流
    比勤奋更重要的,是深度思考的能力
  • 原文地址:https://www.cnblogs.com/debruyne/p/9288748.html
Copyright © 2011-2022 走看看