void bmk_run(char *cmdline) { /* initialize scheduler and jump to main thread */ bmk_sched_init(bmk_mainthread, cmdline); }
/* * 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"); }
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); }
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); }
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 }