免费注册 查看新帖 |

Chinaunix

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

machine start的执行时机 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-06 19:02 |只看该作者 |倒序浏览

arch/arm/mach-davinci/board_evm.c中有:

MACHINE_START(DAVINCI_EVM, "Dahua Product")

    MAINTAINER("Dahua")

    BOOT_MEM(DAVINCI_DDR_BASE, IO_PHYS, IO_VIRT)

    BOOT_PARAMS(0x80000100)

    MAPIO(davinci_map_io)

    INITIRQ(davinci_irq_init)

    .timer = &davinci_timer,

INIT_MACHINE (evm_init)

这里实际上是定义了一个struct machine_desc结构,放在.arch.info段中。MAPIO定义了machine_descmap_io函数,INIT_MACHINE定义了 init_machine函数。这两个函数在什么时候执行呢。

MAPIO

文件:arch/arm/kernel/setup.c

setup_arch

==> paging_init(mdesc);

文件:arch/arm/mm/mmu.c

==> paging_init

==> devicemaps_init(mdesc);

    if (mdesc->map_io)

        mdesc->map_io();

INIT_MACHINE

文件:init/main.c

start_kernel

==> setup_arch(&command_line);

文件:arch/arm/kernel/setup.c

setup_arch

    /*

     * Set up various architecture-specific pointers

     */

    init_arch_irq = mdesc->init_irq;

    system_timer = mdesc->timer;

    init_machine = mdesc->init_machine;

文件:arch/arm/kernel/setup.c

static int __init customize_machine(void)

{

    /* customizes platform devices, or adds new ones */

    if (init_machine)

        init_machine();

    return 0;

}

arch_initcall(customize_machine);

定义在了initcall,所以他将和驱动程序一样在内核线程kernel_init中完成

start_kernel

==> rest_init

==*> kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND); 创建内核线程

kernel_init

==> do_basic_setup

==*> do_initcalls

static void __init do_initcalls(void)

{

    initcall_t *call;

    for (call = __early_initcall_end; call < __initcall_end; call++)

        do_one_initcall(*call); // 将按照排序规则在相应的存储位置执行函数customize_machine()

    /* Make sure there is no pending stuff from the initcall sequence */

    flush_scheduled_work();

}

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP