MCPcopy Create free account
hub / github.com/XpuOS/xsched / InitScheduler

Method InitScheduler

preempt/src/sched/agent.cpp:61–98  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

59}
60
61void SchedAgent::InitScheduler(XSchedulerType scheduler_type, XPolicyType policy_type)
62{
63 if (scheduler_ != nullptr) return;
64
65 auto tmp_scheduler = CreateScheduler(scheduler_type, policy_type);
66 tmp_scheduler->SetExecutor(SchedExecutor::Execute);
67 tmp_scheduler->Run();
68
69 static const std::string kCmdline = []() -> std::string {
70 std::string cmdline;
71
72#if defined(_WIN32)
73 LPWSTR cmdlineW = GetCommandLineW();
74 int size = WideCharToMultiByte(CP_UTF8, 0, cmdlineW, -1, NULL, 0, NULL, NULL);
75 if (size > 0) {
76 std::vector<char> buffer(size);
77 WideCharToMultiByte(CP_UTF8, 0, cmdlineW, -1, buffer.data(), size, NULL, NULL);
78 cmdline = buffer.data();
79 }
80#elif defined(__linux__)
81 std::ifstream cmdline_file("/proc/self/cmdline");
82 if (cmdline_file.good()) {
83 std::string arg;
84 while (std::getline(cmdline_file, arg, '\0') && !arg.empty()) {
85 cmdline = cmdline + arg + " ";
86 }
87 }
88 cmdline_file.close();
89#endif
90
91 return ShrinkString(cmdline, ProcessCreateEvent::CmdlineCapacity() - 1);
92 }();
93
94 auto event = std::make_shared<ProcessCreateEvent>(kCmdline);
95 tmp_scheduler->RecvEvent(event);
96
97 scheduler_ = tmp_scheduler;
98}
99
100void SchedAgent::FiniScheduler()
101{

Callers

nothing calls this directly

Calls 4

ShrinkStringFunction · 0.85
SetExecutorMethod · 0.80
RunMethod · 0.45
RecvEventMethod · 0.45

Tested by

no test coverage detected