예제 #1
0
void
bmk_run(char *cmdline)
{

	/* initialize scheduler and jump to main thread */
	bmk_sched_init(bmk_mainthread, cmdline);
}
예제 #2
0
파일: kernel.c 프로젝트: gandro/rumprun
/*
 * INITIAL C ENTRY POINT.
 */
void _minios_start_kernel(start_info_t *si)
{

    bmk_printf_init(minios_putc, NULL);
    bmk_core_init(STACK_SIZE_PAGE_ORDER, PAGE_SHIFT);

    arch_init(si);
    trap_init();
    bmk_sched_init();

    /* print out some useful information  */
    minios_printk("  start_info: %p(VA)\n", si);
    minios_printk("    nr_pages: 0x%lx\n", si->nr_pages);
    minios_printk("  shared_inf: 0x%08lx(MA)\n", si->shared_info);
    minios_printk("     pt_base: %p(VA)\n", (void *)si->pt_base); 
    minios_printk("nr_pt_frames: 0x%lx\n", si->nr_pt_frames);
    minios_printk("    mfn_list: %p(VA)\n", (void *)si->mfn_list); 
    minios_printk("   mod_start: 0x%lx(VA)\n", si->mod_start);
    minios_printk("     mod_len: %lu\n", si->mod_len); 
    minios_printk("       flags: 0x%x\n", (unsigned int)si->flags);
    minios_printk("    cmd_line: %s\n",  
           si->cmd_line ? (const char *)si->cmd_line : "NULL");

    /* Set up events. */
    init_events();
    
    /* ENABLE EVENT DELIVERY. This is disabled at start of day. */
    __sti();

    arch_print_info();

    setup_xen_features();

    /* Init memory management. */
    init_mm();

    /* Init time and timers. */
    init_time();

    /* Init the console driver. */
    init_console();

    /* Init grant tables */
    init_gnttab();
 
    /* Init XenBus */
    init_xenbus();

    /* Init scheduler. */
    bmk_sched_startmain(_app_main, &start_info);
    bmk_platform_halt("unreachable");
}
예제 #3
0
파일: boot.c 프로젝트: GW-SHC/rumprun
void
bmk_cpu_boot(void *argh)
{

	bmk_cons_clear();

	bmk_cpu_init();
	bmk_sched_init();
	bmk_multiboot(bmk_cpu_multiboot_info);

	spl0();

	bmk_run(bmk_multiboot_cmdline);
}
예제 #4
0
파일: boot.c 프로젝트: VincentS/rumprun
void
x86_boot(struct multiboot_info *mbi)
{

	cons_init();
	bmk_printf("rump kernel bare metal bootstrap\n\n");

	cpu_init();
	bmk_sched_init();
	multiboot(mbi);

	spl0();

	bmk_sched_startmain(bmk_mainthread, multiboot_cmdline);
}
예제 #5
0
void
bmk_main(struct multiboot_info *mbi)
{

	bmk_cons_puts("rump kernel bare metal bootstrap\n\n");
	if ((mbi->flags & MULTIBOOT_MEMORY_INFO) == 0) {
		bmk_cons_puts("multiboot memory info not available\n");
		return;
	}
	if (parsemem(mbi->mmap_addr, mbi->mmap_length))
		return;
	bmk_cpu_init();
	bmk_sched_init();

	rump_init();
	rump_pub_netconfig_dhcp_ipv4_oneshot("wm0");

#ifdef RUMPRUN_APP
	/* run 'em if you got 'em */
	bmk_app_main();
#endif
}