|
最近在读MTD代码时,想到一个问题:在linux内核中,比如有两个__init初始化函数,其中一个__init函数的顺序初始化,依赖于另一个__init函数要先被执行, 这是如何保证的呢?
贴一段我在读MTD相关代码时看到的.
/* drivers/mtd/maps/iq80310.c */
static int __init init_iq80310(void)
{
.....
mymtd = do_map_probe("cfi_probe", &iq80310_map); ------- (1)
.....
}
在(1)处,要想成功,则必须依赖下面的函数先执行:
/* drivers/mtd/chips/cfi_probe.c */
static int __init cfi_probe_init(void)
{
register_mtd_chip_driver(&cfi_chipdrv);
return 0;
}
这种顺序的依赖, linux内核编译是如何保证的? |
|