diff options
| -rw-r--r-- | src/boot/modules/BootNet/BootNet.cc | 6 | ||||
| -rw-r--r-- | src/kernel/HALKit/AMD64/HalKernelMain.cc | 16 | ||||
| -rw-r--r-- | src/kernel/NeKit/OwnPtr.h | 2 | ||||
| -rw-r--r-- | src/kernel/src/FileMgr.cc | 3 | ||||
| -rw-r--r-- | src/kernel/src/PEFCodeMgr.cc | 6 |
5 files changed, 20 insertions, 13 deletions
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<UIntPtr>(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<UIntPtr>(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<Char*>(path), kRestrictRB); + + if (!fFile) { + this->fBad = YES; + return; + } + fPath = KStringBuilder::Construct(path).Leak(); constexpr auto kPefHeader = "PEF_CONTAINER"; |
