Esempio n. 1
0
File: main.cpp Progetto: rstat1/Plex
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 (;;); 
}
Esempio n. 2
0
void kernel_main() {
  isr_install();
  irq_install();

  kprint("Type something, it will go through the kernel\n"
      "Type END to halt the CPU\n> ");
}
Esempio n. 3
0
//! 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;
}
Esempio n. 4
0
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;
}
Esempio n. 5
0
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;
}
Esempio n. 6
0
/**
 * 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);
    }
}
Esempio n. 7
0
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);
}
Esempio n. 8
0
void main() {
    isr_install();
    /* Test the interrupts */
    __asm__ __volatile__("int $2");
    __asm__ __volatile__("int $3");
}
Esempio n. 9
0
void irq_init(void) {
	init_idt();
	isr_install();
	irq_install();
}
Esempio n. 10
0
File: kernel.c Progetto: ALoay94/os
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(;;);
}