void kernel_main(struct multiboot_info *mboot, int initial_stack) { long int mem = 0; mboot_info = mboot; start_video(); putstr("Init Descriptor Tables................."); gdt_install(); idt_install(); putstr("[OK]\n"); putstr("Init ISRs.............................."); isr_install(); putstr("[OK]\n"); putstr("Init IRQs.............................."); irq_install(); __asm__ __volatile__ ("sti"); putstr("[OK]\n"); putstr("Init PIT..............................."); timer_install(); putstr("[OK]\n"); putstr("Amount of memory......................"); mem = mboot->mem_upper / 1024; putnum(mem); putstr("MB\n"); putstr("Init Memory............................"); init_memory_manager(); putstr("\n\n"); putstr("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWelcome to Plex!"); for (;;); }
void kernel_main() { isr_install(); irq_install(); kprint("Type something, it will go through the kernel\n" "Type END to halt the CPU\n> "); }
//! We control all the isr. //! But we should take special care about the page fault isr. int setup_isr_handler() { int i; for( i=0; i<32; i++ ) { isr_install( i, isr_handler ); } return 1; }
void kmain(struct multiboot_info *mbt) { vga_init(); gdt_install(); idt_install(); isr_install(); irq_install(); syscalls_install(); puts_c(__kernel_name " kernel v" __kernel_version_str "\n\n", COLOR_LIGHT_BLUE, COLOR_DEFAULT_BG); uint64_t mem; get_multiboot_info(mbt, &mem); extern uint32_t _kernel_memory_end[]; kprintf("End of kernel's memory: 0x%x\n", (uint64_t) (uint32_t) _kernel_memory_end); kprintf("Memory:\n%l B\n%l KB\n%l MB\n%l GB\n", mem, mem / 1024, mem / 1024 / 1024, mem / 1024 / 1024 / 1024); init_paging(); map_page(0xFD7FF000, 0x60000, 3); int *p = (int *) 0xFD7FF000; *p = 12; kprintf("*(0x%x) = %i\n", (uint64_t) (uint32_t) p, *p); map_page(0x10000000, 0x60000, 3); int *p2 = (int *) 0x10000000; kprintf("*(0x%x) = %i\n", (uint64_t) (uint32_t) p2, *p2); print_next_available_page(); uint32_t ap = allocate_page(203); map_page(ap, 0x60000, 3); int *p3 = (int *) ap; kprintf("*(0x%x) = %i\n", (uint64_t) ap, *p3); print_next_available_page(); ap = allocate_page(203); kprintf("ap = 0x%x\n", (uint32_t) ap); struct kthread thread; create_kthread(thread_test, &thread); start_kthread(&thread); kprintf("Returned from thread.\n"); _asm_print_test(); return; }
void kmain(){ isr_install(); clearScreen(); while(1){ print("Echinopsis> "); string ch = readStr(); if(strEql(ch,"kuria")){ clearScreen(); continue; } else if(strEql(ch,"")){ //enter } else{ print("\n"); print(ch); print(": command not found"); } print("\n"); } return; }
/** * Run kernel. */ void kmain() { gdt_install(); idt_install(); isr_install(); irq_install(); clock_install(); vga_init(); vga_write("Bandit Kernel v0.0.1\n"); vga_write("Developer: Matheus Vieira Portela\n"); vga_write("Contact: matheusvportela at gmail dot com\n\n"); clock_set_frequency(1); /* test_division_by_zero_exception(); */ /* Kernel infinite loop */ while(1) { vga_write("tick\n"); clock_wait(18); } }
void main() { char *video_memory = (char *)0xb8000; *video_memory = 'X'; some_function(); init_video(); idt_install(); isr_install(); irq_install(); timer_install(); keyboard_install(); __asm__ __volatile__ ("sti"); print("Hello World\n"); print("\n\tFrom Ajay Saini!\n"); // test : running of exception handlers //print(20/0); }
void main() { isr_install(); /* Test the interrupts */ __asm__ __volatile__("int $2"); __asm__ __volatile__("int $3"); }
void irq_init(void) { init_idt(); isr_install(); irq_install(); }
void kmain(void) { kernel_end = (uint64_t)heap_addr; kernel_heap_ptr = (uint8_t*)((uint64_t)&VMA + kernel_end + heap_size) ; UPD = (uint64_t*)((uint64_t)&VMA + kernel_end + 0x3000); KPD = (uint64_t*)((uint64_t)&VMA + kernel_end + 0x4000); PML4 = (uint64_t*)((uint64_t)&VMA + kernel_end); *(KPD + 511) = (kernel_end + 0x4000) | 3; map_mem(mboot_info); #if _GFX_ init_video(); #endif idt_install(); isr_install(); vmem_init(); serial.init(); extern void load_tss(void); load_tss(); extern uint64_t k_tss64_sp; *(uint64_t*)( (uint64_t)&VMA + (uint64_t)&k_tss64_sp ) = 0xFFFFFFFFC0008000; pit_set_freq(2000); // timer tick = 500 us pit_install(); irq_install(); extern void mouse_init(); //mouse_init(); extern void mouse_handler(void*); //irq_install_handler(12, mouse_handler); multiboot_module_t *mod = (multiboot_module_t*)(uint64_t)mboot_info->mods_addr; ramdev_private_t ramdev_private = (ramdev_private_t) { .ptr = (void*)((uint64_t)&VMA + mod->mod_start), .size = (uint32_t)(mod->mod_end - mod->mod_start), }; inode_t ramdisk_inode = (inode_t) { .name = "ramdisk", .type = FS_CHRDEV, .fs = &devfs, .dev = &ramdev, .p = &ramdev_private, }; vfs_create(&dev_root, "/", &ramdisk_inode); inode_t *rootfs = initramfs.load(&ramdisk_inode); vfs_mount_root(rootfs); irq_install_handler(1, kbd_handler); devman.init(); fsman.init(); #if _DBG_CON_ // We should disable debugging by this stage! serial.end(); #endif process_t *init = load_elf("/bin/init"); extern void spawn_init(process_t*); spawn_init(init); for(;;); }