void kmain(kernel_boot_info_t info) { if(info.magic_number != MULTIBOOT_BOOTLOADER_MAGIC) { printk("Invalid Boot Image!"); return; } else { printk("Boot Successfull!"); } terminal_initialize(); // Disable Interrupts disable_interrupts(); install_gdt(); install_idt(); // Enable Interrupts enable_interrupts(); install_mm(&info); install_paging(&info); install_keyboard(); install_pit(); initialize_initrd(&info); list_mount_points(); while(1); }
int kernel_main(uint32_t esp) { initial_esp = esp; gdt_install(); idt_install(); isrs_install(); irq_install(); asm volatile("sti"); timer_install(); keyboard_install(); ASSERT(mboot_ptr != 0); ASSERT(mboot_ptr->mods_count > 0); uint32_t initrd_location = *((uint32_t*)mboot_ptr->mods_addr); uint32_t initrd_end = *(uint32_t*)(mboot_ptr->mods_addr + 4); // move the start of our kernel heap to past the initrd placement_address = initrd_end; initialize_paging(); initialize_tasking(); fs_root = initialize_initrd(initrd_location); // Create a new process in a new address space which is a clone of this. int ret = fork(); printf("fork() returned %x, ", ret); printf(" getpid() returned %x\n", getpid()); printf("Loading initial ramdisk...\n"); asm volatile("cli"); traverse_initrd(); asm volatile("sti"); printf("That's all folks\n"); for(;;); return 0; }
int kmain(struct multiboot* mboot_ptr) { clearScreen(); init_descriptor_tables(); __asm__ __volatile__("sti"); uint32 initrd_location = findInitrd(mboot_ptr); initialize_paging(); // Initialize the initial ramdisk, and set it as the filesystem root. fs_root = initialize_initrd(initrd_location); printIntro(); println(PRO_TIP, 0x0F); kbHelp(); launchShell(); return 0; }