首页 文章

更改内核驱动程序内置初始化的顺序? [重复]

提问于
浏览
0

这个问题在这里已有答案:

我的目标是用于飞思卡尔iMX53 Arm CPU板的嵌入式Linux 2.6.35.3 .

当所有各种CAN总线相关驱动程序(FlexCAN)在内核启动过程中初始化并准备好使用时,我需要进行更改 . 我需要CAN总线初始化的时间要早得多,以便我可以在用户空间准备好脚本完成工作之前很快发送一些特定的CAN原始消息 .

如何控制编译的(内置)内核模块/驱动程序在内核启动和初始化过程中由内核进行内部探测 .

我不是在谈论可以在脚本中进行模式探测的文件系统级.ko文件 . 这是之前的方法 .

抱歉我格式不好的linux问题..我不经常在内核空间工作..尽可能快地尝试破解我的方式 .

1 回答

  • 1

    initcall排序在这里定义:

    http://lxr.free-electrons.com/source/include/linux/init.h#L194

    这是供参考:

    /*
     * A "pure" initcall has no dependencies on anything else, and purely
     * initializes variables that couldn't be statically initialized.
     *
     * This only exists for built-in code, not for modules.
     * Keep main.c:initcall_level_names[] in sync.
     */
    #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)
    

    由于 module_init #defined为 device_initcall ,因此一个没有任何依赖它的通用模块会在序列结束时初始化 . 要尽早加载模块,只需将其 module_init 调用更改为之前发生的其他内容(例如 subsys_initcall

    注意:只是在事物上切换顺序可以打破其他依赖关系,并且你可以从地狱进入catch-22依赖循环 .

相关问题