From 87aa249b33a68013b3a787c8d5c0ce880f8c4d84 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Wed, 4 Feb 2026 10:44:00 +0100 Subject: chore: kernel: Source code fixes and stabilization. Signed-off-by: Amlal El Mahrouss --- src/boot/modules/BootNet/BootNet.cc | 6 ++++-- src/kernel/HALKit/AMD64/HalKernelMain.cc | 16 +++++++++------- src/kernel/NeKit/OwnPtr.h | 2 +- src/kernel/src/FileMgr.cc | 3 --- src/kernel/src/PEFCodeMgr.cc | 6 ++++++ 5 files changed, 20 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/boot/modules/BootNet/BootNet.cc b/src/boot/modules/BootNet/BootNet.cc index 8b0112c5..ced25d74 100644 --- a/src/boot/modules/BootNet/BootNet.cc +++ b/src/boot/modules/BootNet/BootNet.cc @@ -84,9 +84,11 @@ STATIC Void bootnet_read_ip_packet(BOOTNET_INTERNET_HEADER inet, /// Connect to the local BootNet server. + auto len = inet.Length; + /// And receive the handshake packet. - if (kEfiProtocol->Receive(kEfiProtocol, &size_inet, (UInt32*) &inet.Length, (VoidPtr) &inet, - nullptr, nullptr, nullptr) == kEfiOk) { + if (kEfiProtocol->Receive(kEfiProtocol, &size_inet, (UInt32*)&len, (VoidPtr) &inet, nullptr, nullptr, + nullptr) == kEfiOk) { BOOTNET_INTERNET_HEADER* out = nullptr; BS->AllocatePool(EfiLoaderData, sizeof(BOOTNET_INTERNET_HEADER) + inet.Length, (VoidPtr*) &out); diff --git a/src/kernel/HALKit/AMD64/HalKernelMain.cc b/src/kernel/HALKit/AMD64/HalKernelMain.cc index 0179732f..7e6579de 100644 --- a/src/kernel/HALKit/AMD64/HalKernelMain.cc +++ b/src/kernel/HALKit/AMD64/HalKernelMain.cc @@ -133,6 +133,14 @@ EXTERN_C Kernel::Int32 hal_init_platform(Kernel::HEL::BootInfoHeader* handover_h } EXTERN_C Kernel::Void hal_real_init(Kernel::Void) { + HAL::mp_init_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); + + HAL::Register64 idt_reg; + idt_reg.Base = reinterpret_cast(kInterruptVectorTable); + + HAL::IDTLoader idt_loader; + idt_loader.Load(idt_reg); + #ifdef __FSKIT_INCLUDES_OPENHEFS__ OpenHeFS::fs_init_openhefs(); HeFileSystemMgr::Mount(new HeFileSystemMgr()); @@ -149,13 +157,7 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) { if (ldr.IsLoaded()) rtl_create_user_process(ldr, UserProcess::ExecutableKind::kExecutableKind); - HAL::mp_init_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); - - HAL::Register64 idt_reg; - idt_reg.Base = reinterpret_cast(kInterruptVectorTable); - - HAL::IDTLoader idt_loader; - idt_loader.Load(idt_reg); + UserProcessScheduler::The().SwitchTeam(kMidUserTeam); while (YES); } diff --git a/src/kernel/NeKit/OwnPtr.h b/src/kernel/NeKit/OwnPtr.h index 01a3f969..58b6f262 100644 --- a/src/kernel/NeKit/OwnPtr.h +++ b/src/kernel/NeKit/OwnPtr.h @@ -34,7 +34,7 @@ class OwnPtr final { } fCls = new T(arg...); - return fCls; + return fCls != nullptr; } void Reset() { diff --git a/src/kernel/src/FileMgr.cc b/src/kernel/src/FileMgr.cc index fb2a40dc..b33e54c3 100644 --- a/src/kernel/src/FileMgr.cc +++ b/src/kernel/src/FileMgr.cc @@ -17,7 +17,6 @@ STATIC IFilesystemMgr* kMountedFilesystem = nullptr; /// @brief FilesystemMgr getter. /// @return The mounted filesystem. _Output IFilesystemMgr* IFilesystemMgr::GetMounted() { - MUST_PASS(kMountedFilesystem && kMountedFilesystem->GetMounted()); return kMountedFilesystem; } @@ -27,8 +26,6 @@ _Output IFilesystemMgr* IFilesystemMgr::Unmount() { if (kMountedFilesystem) { auto mount = kMountedFilesystem; - MUST_PASS(mount->GetMounted()); - kMountedFilesystem = nullptr; return mount; } diff --git a/src/kernel/src/PEFCodeMgr.cc b/src/kernel/src/PEFCodeMgr.cc index db140ba4..3c2727e7 100644 --- a/src/kernel/src/PEFCodeMgr.cc +++ b/src/kernel/src/PEFCodeMgr.cc @@ -89,6 +89,12 @@ PEFLoader::PEFLoader(const VoidPtr blob) : fCachedBlob(blob) { /***********************************************************************************/ PEFLoader::PEFLoader(const Char* path) : fCachedBlob(nullptr), fFatBinary(false), fBad(false) { fFile.New(const_cast(path), kRestrictRB); + + if (!fFile) { + this->fBad = YES; + return; + } + fPath = KStringBuilder::Construct(path).Leak(); constexpr auto kPefHeader = "PEF_CONTAINER"; -- cgit v1.2.3