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

Function setup_kernel

lab6/src/2/src/kernel/setup.cpp:69–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

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