免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3890 | 回复: 4
打印 上一主题 下一主题

内核模块加载顺序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-19 17:30 |只看该作者 |倒序浏览
很多模块可以直接编译进内核,请问在内核启动的时候,如果确定各个模块的加载顺序呢?
是在什么时候开始内核模块的加载?

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
2 [报告]
发表于 2011-02-19 17:40 |只看该作者
do_basic_setup
do_early_basic_setup


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

论坛徽章:
0
3 [报告]
发表于 2011-02-19 18:59 |只看该作者
回复 2# 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)

谢谢

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
4 [报告]
发表于 2011-02-19 20:13 |只看该作者
回复  T-Bagwell


static void __init do_basic_setup(void)
{
        cpuset_init_smp();
        usermodehel ...
moto_linux 发表于 2011-02-19 18:59



    你可以打印出来,不是么?

论坛徽章:
0
5 [报告]
发表于 2011-02-19 20:45 |只看该作者
你可以打印出来,不是么?
T-Bagwell 发表于 2011-02-19 20:13


可能我没有描述清楚。
我指的是比如mtdchar.c中的 mtd 模块,一般是编译进内核的,当然还有一些其他模块也是编译进内核的。
在内核起来的时候,加载这些模块,是按照什么顺序加载的?

我不是指类似subsys_initcall(pcibios_init);  这种函数的调用顺序,这种函数的调用顺序在init.h里面定义的。
   
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP