kern
annotate src/main.c @ 57:437360696883
I think we're done for now. two processes seem to be scheduled and switched just fine, fork seems to work (NO CoW YET!)
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Tue, 16 Aug 2011 03:26:53 +0300 |
parents | f65b348780e3 |
children | 0fe6eef16335 |
rev | line source |
---|---|
nuclear@1 | 1 #include <stdio.h> |
nuclear@16 | 2 #include "mboot.h" |
nuclear@0 | 3 #include "vid.h" |
nuclear@1 | 4 #include "term.h" |
nuclear@16 | 5 #include "asmops.h" |
nuclear@7 | 6 #include "segm.h" |
nuclear@10 | 7 #include "intr.h" |
nuclear@36 | 8 #include "rtc.h" |
nuclear@33 | 9 #include "timer.h" |
nuclear@27 | 10 #include "mem.h" |
nuclear@16 | 11 #include "vm.h" |
nuclear@47 | 12 #include "proc.h" |
nuclear@16 | 13 |
nuclear@2 | 14 |
nuclear@16 | 15 void kmain(struct mboot_info *mbinf) |
nuclear@0 | 16 { |
nuclear@2 | 17 clear_scr(); |
nuclear@16 | 18 |
nuclear@16 | 19 /* pointless verbal diarrhea */ |
nuclear@16 | 20 if(mbinf->flags & MB_LDRNAME) { |
nuclear@16 | 21 printf("loaded by: %s\n", mbinf->boot_loader_name); |
nuclear@16 | 22 } |
nuclear@16 | 23 if(mbinf->flags & MB_CMDLINE) { |
nuclear@16 | 24 printf("kernel command line: %s\n", mbinf->cmdline); |
nuclear@16 | 25 } |
nuclear@16 | 26 |
nuclear@2 | 27 puts("kernel starting up"); |
nuclear@2 | 28 |
nuclear@7 | 29 init_segm(); |
nuclear@10 | 30 init_intr(); |
nuclear@7 | 31 |
nuclear@31 | 32 |
nuclear@26 | 33 /* initialize the physical memory manager */ |
nuclear@26 | 34 init_mem(mbinf); |
nuclear@26 | 35 /* initialize paging and the virtual memory manager */ |
nuclear@26 | 36 init_vm(); |
nuclear@19 | 37 |
nuclear@40 | 38 /* initialize the timer and RTC */ |
nuclear@40 | 39 init_timer(); |
nuclear@40 | 40 init_rtc(); |
nuclear@40 | 41 |
nuclear@52 | 42 /* create the first process and switch to it */ |
nuclear@47 | 43 init_proc(); |
nuclear@47 | 44 |
nuclear@52 | 45 /* XXX unreachable */ |
nuclear@31 | 46 |
nuclear@2 | 47 for(;;) { |
nuclear@43 | 48 halt_cpu(); |
nuclear@2 | 49 } |
nuclear@0 | 50 } |