diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-12-31 16:50:34 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-12-31 16:50:34 +0100 |
| commit | ad677bd1ed2c6d1a052d426117a4d20a0b59ac52 (patch) | |
| tree | 67898ad7cb935389619d8e9272cac9a732e24c92 /dev/Kernel/HALKit/AMD64/HalKernelMain.cc | |
| parent | 510c659355d9227d1b75edfe50c1b8691ea2f982 (diff) | |
FIX: CUSA and improved algorithm.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/HALKit/AMD64/HalKernelMain.cc')
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalKernelMain.cc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc index 5de6ddd9..25bb1de3 100644 --- a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc +++ b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc @@ -24,6 +24,14 @@ EXTERN_C Kernel::Void rtl_kernel_main(Kernel::SizeT argc, char** argv, char** en STATIC Kernel::Void hal_init_cxx_ctors() { + for (Kernel::SizeT i = 0U; i < Kernel::UserProcessScheduler::The().CurrentTeam().AsArray().Count(); ++i) + { + Kernel::UserProcessScheduler::The().CurrentTeam().AsArray()[i] = Kernel::UserThread(); + Kernel::UserProcessScheduler::The().CurrentTeam().AsArray()[i].Status = Kernel::ProcessStatusKind::kKilled; + } + + Kernel::UserProcessScheduler::The().CurrentTeam().mProcessCount = 0UL; + for (Kernel::SizeT index = 0UL; __CTOR_LIST__[index] != __DTOR_LIST__; ++index) { Kernel::rtl_ctor_kind constructor_cxx = (Kernel::rtl_ctor_kind)__CTOR_LIST__[index]; @@ -85,7 +93,10 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept { auto str_proc = Kernel::rt_alloc_string("System"); - Kernel::rtl_create_process(rtl_kernel_main, str_proc); + auto pid = Kernel::rtl_create_process(rtl_kernel_main, str_proc); + + Kernel::UserProcessScheduler::The().CurrentTeam().AsArray()[pid].PTime = 0; + Kernel::UserProcessScheduler::The().CurrentTeam().AsArray()[pid].Status = Kernel::ProcessStatusKind::kRunning; delete str_proc; str_proc = nullptr; |
