Esempio n. 1
0
void
bmk_multiboot(struct multiboot_info *mbi)
{
	unsigned long cmdlinelen;
	char *cmdline;

	bmk_printf_init(bmk_cons_putc, NULL);
	bmk_core_init(BMK_THREAD_STACK_PAGE_ORDER, PAGE_SIZE);

	bmk_printf("rump kernel bare metal multibootstrap\n\n");

	/* save the command line before something overwrites it */
	cmdline = (char *)(uintptr_t)mbi->cmdline;
	cmdlinelen = bmk_strlen(cmdline);
	if (cmdlinelen >= BMK_MULTIBOOT_CMDLINE_SIZE)
		bmk_platform_halt("command line too long, "
		    "increase BMK_MULTIBOOT_CMDLINE_SIZE");
	bmk_strcpy(bmk_multiboot_cmdline, cmdline);

	if ((mbi->flags & MULTIBOOT_MEMORY_INFO) == 0)
		bmk_platform_halt("multiboot memory info not available\n");

	if (parsemem(mbi->mmap_addr, mbi->mmap_length) != 0)
		bmk_platform_halt("multiboot memory parse failed");

	bmk_intr_init();
}
Esempio n. 2
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
}