283
|
1 module kernel;
|
292
|
2
|
283
|
3 import memory;
|
|
4 import process;
|
292
|
5 import scheduler;
|
|
6 import arch;
|
355
|
7 import io;
|
402
|
8 import debug;
|
283
|
9
|
381
|
10
|
283
|
11 // Main entry point of the kernel:
|
293
|
12 function void start()
|
283
|
13 {
|
381
|
14 io.println("Welcome to lcfos!");
|
353
|
15 arch.init();
|
362
|
16
|
407
|
17 memory.init();
|
393
|
18 process.init();
|
407
|
19 load_init_process();
|
393
|
20
|
381
|
21 io.println("Kernel finished");
|
393
|
22 panic();
|
283
|
23 }
|
|
24
|
367
|
25 // Called in total stress:
|
293
|
26 function void panic()
|
283
|
27 {
|
407
|
28 io.println("Kernel panic!");
|
308
|
29 arch.halt();
|
283
|
30 }
|
|
31
|
407
|
32 function void load_init_process()
|
|
33 {
|
|
34 var process.process_t* init_proc;
|
|
35 init_proc = process.create();
|
|
36 process.enqueue(init_proc);
|
|
37
|
|
38 io.print2("init address ", cast<int>(init_proc));
|
|
39 }
|
|
40
|