LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 916|回复: 4

如何保证__init函数之间的依赖关系?

[复制链接]
发表于 2006-10-12 18:39:33 | 显示全部楼层 |阅读模式
最近在读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内核编译是如何保证的?
发表于 2006-10-14 13:45:21 | 显示全部楼层
连接时放在前面的先执行,你研究一下Makefile,各模块的前后顺序是有讲究的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-16 09:24:50 | 显示全部楼层
原来Makefile相关的地方如下:
subdir-y       := chips maps devices nand

我把这句改了一下,调换了maps目录和chips目录的顺序,
subdir-y        := maps chips devices nand
结果内核还是能够识别出来.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-16 09:24:59 | 显示全部楼层
原来Makefile相关的地方如下:
subdir-y       := chips maps devices nand

我把这句改了一下,调换了maps目录和chips目录的顺序,
subdir-y        := maps chips devices nand
结果内核还是能够识别出来.
回复 支持 反对

使用道具 举报

发表于 2006-10-17 16:47:47 | 显示全部楼层
函数1依赖于函数2的执行,当然和调用顺序有关的!与编译没有关系!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表