|
|
- #include <defs.h>
- #include <stdio.h>
- #include <string.h>
- #include <console.h>
- #include <kdebug.h>
- #include <picirq.h>
- #include <trap.h>
- #include <clock.h>
- #include <intr.h>
- #include <pmm.h>
- #include <proc.h>
- #include <kmonitor.h>
-
- int kern_init(void) __attribute__((noreturn));
- void grade_backtrace(void);
-
- int
- kern_init(void) {
- extern char edata[], end[];
- memset(edata, 0, end - edata);
-
- cons_init(); // init the console
-
- const char *message = "(THU.CST) os is loading ...";
- cprintf("%s\n\n", message);
-
- print_kerninfo();
- pmm_init(); // init physical memory management
- pic_init(); // init interrupt controller
- idt_init(); // init interrupt descriptor table
- proc_init(); // init process table
- clock_init(); // init clock interrupt
- intr_enable(); // enable irq interrupt
-
- schedule(); //let init proc run
- while (do_wait(1, NULL) == 0) {
- schedule();
- }
- }
|