内核模块加载顺序

很多模块可以直接编译进内核,请问在内核启动的时候,如果确定各个模块的加载顺序呢?
是在什么时候开始内核模块的加载?

作者: moto_linux   发布时间: 2011-02-19

do_basic_setup
do_early_basic_setup


你可以在boot的时候加参数,initcall_debug

作者: T-Bagwell   发布时间: 2011-02-19

回复 T-Bagwell


static void __init do_basic_setup(void)
{
        cpuset_init_smp();
        usermodehelper_init();
        init_tmpfs();
        driver_init();
        init_irq_proc();
        do_ctors();
        do_initcalls();
}
  
你是不是指的do_initcalls?
这个好像是一些CPU预定义的内核启动过程中要按顺序执行的一些函数:
#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)

谢谢

作者: moto_linux   发布时间: 2011-02-19