作者mayasky ( )
看板LinuxDev
标题Re: [问题] Driver的启动顺序问题?
时间Wed Mar 31 18:01:41 2010
※ 引述《askacis (ASKA)》之铭言:
: ※ 引述《lomoway10 (lomoway)》之铭言:
: : 我有几个driver,彼此有个启动顺序问题.
: : 我要怎麽让kernel知道要先启动哪个driver.再去执行哪个driver呢?
: : (这里都是把driver合在kernel里面,不是build module)
: : 另一个问题.假设.顺序已经对了.
: : 但是第一个driver还没有initial完.第二个driver已经开始启动.
: : 可是他却因为第一个还没完成.而出现probe失败的讯息.导致initial失败.
: : 这种问题又该怎麽处理?
: : 有没有人有相关的经验呢??
: 如果都是build-in在kernel里头的话,那麽kernel启动的时候有
: 分先後等级的函式可以让你呼叫,请看
: kernel_source/include/linux/init.h
: 在你的driver加上相对应的函式就可以控制不同driver起来的顺序了
: EX. 如果想要让你的B driver启动顺序在A之前的话,可以这样写
: In A driver:
: static int __init init_A (void)
: {
: ....
: }
: late_initcall(init_A);
: In B driver:
: static int __init init_B (void)
: {
: ....
: }
: arch_initcall(init_B);
: 有错的话还请大大指正罗~~^^
如果属於於同一类的话这招或许就不行了?
有__init会link该function在一个init table里
init时会走过一次这table
如果在同一级中似乎是按照实作(or宣告)的先後顺序link?
(以上皆是遥远的记忆,我遇过一次这需求)
所以你要B先跑就先实作B~再实作A
目的就是安排init table的先後罢了
手边没机器可以TRACE和实验,有错请告诉我XD
--
最大的梦想
是有一台时光机
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.209.95