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

Method initialize

lab8/src/7/src/kernel/program.cpp:21–45  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

19}
20
21void ProgramManager::initialize()
22{
23 allPrograms.initialize();
24 readyPrograms.initialize();
25 running = nullptr;
26
27 for (int i = 0; i < MAX_PROGRAM_AMOUNT; ++i)
28 {
29 PCB_SET_STATUS[i] = false;
30 }
31
32 // 初始化用户代码段、数据段和栈段
33 int selector;
34
35 selector = asm_add_global_descriptor(USER_CODE_LOW, USER_CODE_HIGH);
36 USER_CODE_SELECTOR = (selector << 3) | 0x3;
37
38 selector = asm_add_global_descriptor(USER_DATA_LOW, USER_DATA_HIGH);
39 USER_DATA_SELECTOR = (selector << 3) | 0x3;
40
41 selector = asm_add_global_descriptor(USER_STACK_LOW, USER_STACK_HIGH);
42 USER_STACK_SELECTOR = (selector << 3) | 0x3;
43
44 initializeTSS();
45}
46
47int ProgramManager::executeThread(ThreadFunction function, void *parameter, const char *name, int priority)
48{

Callers 1

createUserVirtualPoolMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected