MCPcopy Create free account
hub / github.com/YatSenOS/YatSenOS-Tutorial-Volume-1 / setup_kernel

Function setup_kernel

lab6/src/1/src/kernel/setup.cpp:60–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58}
59
60extern "C" void setup_kernel()
61{
62
63 // 中断管理器
64 interruptManager.initialize();
65 interruptManager.enableTimeInterrupt();
66 interruptManager.setTimeInterrupt((void *)asm_time_interrupt_handler);
67
68 // 输出管理器
69 stdio.initialize();
70
71 // 进程/线程管理器
72 programManager.initialize();
73
74 // 创建第一个线程
75 int pid = programManager.executeThread(first_thread, nullptr, "first thread", 1);
76 if (pid == -1)
77 {
78 printf("can not execute thread\n");
79 asm_halt();
80 }
81
82 ListItem *item = programManager.readyPrograms.front();
83 PCB *firstThread = ListItem2PCB(item, tagInGeneralList);
84 firstThread->status = RUNNING;
85 programManager.readyPrograms.pop_front();
86 programManager.running = firstThread;
87 asm_switch_thread(0, firstThread);
88
89 asm_halt();
90}

Callers

nothing calls this directly

Calls 7

printfFunction · 0.70
initializeMethod · 0.45
enableTimeInterruptMethod · 0.45
setTimeInterruptMethod · 0.45
executeThreadMethod · 0.45
frontMethod · 0.45
pop_frontMethod · 0.45

Tested by

no test coverage detected