Main.c(L_5.0_04210\kernel\init):start_kernel();
Main.c(L_5.0_04210\kernel\init):reset_init();
Main.c(L_5.0_04210\kernel\init):kernel_init();
Main.c(L_5.0_04210\kernel\init):kernel_init_freeable();
Main.c(L_5.0_04210\kernel\init):do_basic_setup();
Main.c(L_5.0_04210\kernel\init):driver_init();
bus.c(L_5.0_04210\kernel\drivers\base):device_init();
static void __init do_basic_setup(void)
{
cpuset_init_smp();
usermodehelper_init();
shmem_init();
driver_init();
init_irq_proc();
do_ctors();
usermodehelper_enable();
do_initcalls();
random_int_secret_init();
}
由上面函数可以知道,device注册在module_init执行之前
void __initdriver_init(void)
{
/* These are the core pieces */
devtmpfs_init();
devices_init();//---------sys/devices
buses_init();//---------sys/bus
classes_init();//---------sys/class
firmware_init();//---------sys/firmware
hypervisor_init();
/* These are also core pieces, but mustcome after the
* core core pieces.
*/
platform_bus_init();//---------sys/bus/platform
cpu_dev_init();
memory_dev_init();
}
由上面函数可以知道,sys/device注册在sys/bus执行之前