oxytoxin

unix-like kernel
git clone git://git.evenfri.pw/oxytoxin.git
Log | Files | Refs | README | LICENSE

init.c (626B)


      1 #include "oxytoxin.h"
      2 
      3 size_t read(void *buf, size_t size) {
      4   size_t bytes_read;
      5   size_t i;
      6   char *ptr;
      7 
      8   ptr = (char *)buf;
      9   bytes_read = 0;
     10 
     11   for (i = 0; i < size; i++) {
     12     ptr[i] = keyboard_read();
     13     bytes_read++;
     14   }
     15   return bytes_read;
     16 }
     17 
     18 void start_kernel(uint32_t magic, multiboot_info_t *mbi) {
     19   char c;
     20   size_t bytes;
     21 
     22   (void)magic;
     23   (void)mbi;
     24 
     25   tty_init();
     26   gdt_init();
     27   idt_init();
     28   pit_init(1000);
     29   keyboard_init();
     30   ata_init();
     31 
     32   asm volatile ("sti");
     33 
     34   while (1) {
     35     bytes = read(&c, 1);
     36 
     37     if (bytes > 0) {
     38       tty_write(&c, 1);
     39     } else {
     40       asm volatile("hlt");
     41     }
     42   }
     43 }