From 6c7e5ebc003a0bc4f98c23a8f9754b273a6e3a28 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Wed, 2 Apr 2025 08:10:08 +0200 Subject: boot/net: rename Boot.S files, clarify EEPROM implication, and prep UDP read MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Renamed Boot.S → BootNetStartup.S and SysChk/Boot.S → SysChkStartup.S for clarity - Replaced BOOTNET_INTERNET_HEADER.ImpliesEEPROM with ImpliesProgram to better reflect the generic reprogramming intent - Introduced `bootnet_read_udp_packet()` stub for future UDP packet parsing from bootnet.json - Minor alignment and comment fixes in various headers (CoreBoot, EPM, Json) - Updated HalPagingMgr to use PageStore instead of NE_PAGE_STORE - Boot time now prints cycles since start; triggered fs_init_nefs() earlier during HAL init - Prep for extended MBCI and master structure support in COREBOOT_LINEAR_EXEC - Numerous cleanups across DMA, NewKit, and Json parsing to prep for extended patching and block-level bootstrap This lays groundwork for richer NetBoot infrastructure in NeKernel and aligns naming and structure conventions across subsystems. Signed-off-by: Amlal El Mahrouss --- dev/boot/BootKit/BootKit.h | 2 +- dev/boot/modules/BootNet/Boot.S | 22 ------------------- dev/boot/modules/BootNet/BootNet.cc | 10 ++++++++- dev/boot/modules/BootNet/BootNet.h | 2 +- dev/boot/modules/BootNet/BootNetStartup.S | 22 +++++++++++++++++++ dev/boot/modules/SysChk/Boot.S | 22 ------------------- dev/boot/modules/SysChk/SysChkStartup.S | 22 +++++++++++++++++++ dev/boot/src/HEL/AMD64/BootEFI.cc | 6 +++--- dev/boot/src/HEL/ARM64/BootEFI.cc | 4 ++-- dev/boot/src/New+Delete.cc | 2 +- dev/kernel/CFKit/GUIDWrapper.h | 4 ++-- dev/kernel/CFKit/Utils.h | 1 + dev/kernel/FirmwareKit/CoreBoot/BootNet.h | 2 +- dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h | 11 +++++++--- dev/kernel/FirmwareKit/EPM.h | 4 ++-- dev/kernel/HALKit/AMD64/HalKernelMain.cc | 2 ++ dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc | 12 +++++------ dev/kernel/HALKit/AMD64/PCI/DMA.cc | 22 +++++++++---------- dev/kernel/HALKit/AMD64/Storage/DMA+Generic.cc | 2 +- dev/kernel/NewKit/Json.h | 30 +++++++++++++++++++------- dev/kernel/NewKit/Macros.h | 8 +++---- dev/kernel/NewKit/OwnPtr.h | 5 +++-- dev/kernel/StorageKit/ATA.h | 7 +++--- dev/kernel/src/Json.cc | 2 +- dev/kernel/src/KernelProcessScheduler.cc | 12 +++++++++++ 25 files changed, 139 insertions(+), 99 deletions(-) delete mode 100644 dev/boot/modules/BootNet/Boot.S create mode 100644 dev/boot/modules/BootNet/BootNetStartup.S delete mode 100644 dev/boot/modules/SysChk/Boot.S create mode 100644 dev/boot/modules/SysChk/SysChkStartup.S (limited to 'dev') diff --git a/dev/boot/BootKit/BootKit.h b/dev/boot/BootKit/BootKit.h index 759b0d94..3fed8944 100644 --- a/dev/boot/BootKit/BootKit.h +++ b/dev/boot/BootKit/BootKit.h @@ -381,7 +381,7 @@ namespace Boot epm_boot.LbaStart = kNeFSRootCatalogStartAddress; epm_boot.LbaEnd = fDiskDev.GetDiskSize(); epm_boot.SectorSz = part.SectorSize; - epm_boot.Kind = kEPMNeOS; + epm_boot.Kind = kEPMNeKernel; epm_boot.NumBlocks = part.CatalogCount; CopyMem(epm_boot.Name, reinterpret_cast(const_cast(kBlockName)), StrLen(kBlockName)); diff --git a/dev/boot/modules/BootNet/Boot.S b/dev/boot/modules/BootNet/Boot.S deleted file mode 100644 index 976c5e88..00000000 --- a/dev/boot/modules/BootNet/Boot.S +++ /dev/null @@ -1,22 +0,0 @@ -;; /* -;; * ======================================================== -;; * -;; * BootZ -;; * Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. -;; * -;; * ======================================================== -;; */ - -#ifdef __NE_AMD64__ -.code64 -.intel_syntax noprefix -#endif - -#define kTypeDriver 101 -#define kArchAmd64 122 -#define kHandoverMagic 0xBADCC - -.section .ldr - -.quad kHandoverMagic -.word kTypeDriver diff --git a/dev/boot/modules/BootNet/BootNet.cc b/dev/boot/modules/BootNet/BootNet.cc index 2396852f..a877b9a1 100644 --- a/dev/boot/modules/BootNet/BootNet.cc +++ b/dev/boot/modules/BootNet/BootNet.cc @@ -13,10 +13,14 @@ EfiGUID kEfiIP4ProtoGUID; +STATIC Void bootnet_read_udp_packet(BOOTNET_INTERNET_HEADER&); + EXTERN_C Int32 ModuleMain(Kernel::HEL::BootInfoHeader* handover) { BOOTNET_INTERNET_HEADER inet{}; + bootnet_read_udp_packet(inet); + memset(&inet, 0, sizeof(BOOTNET_INTERNET_HEADER)); /// TODO: Read packet from JSON file 'bootnet.json' @@ -29,7 +33,7 @@ EXTERN_C Int32 ModuleMain(Kernel::HEL::BootInfoHeader* handover) return kEfiFail; } - if (!inet.ImpliesEEPROM) + if (!inet.ImpliesProgram) { Boot::BootThread thread(inet.Data); @@ -50,3 +54,7 @@ EXTERN_C Int32 ModuleMain(Kernel::HEL::BootInfoHeader* handover) return kEfiFail; } + +STATIC Void bootnet_read_udp_packet(BOOTNET_INTERNET_HEADER&) +{ +} \ No newline at end of file diff --git a/dev/boot/modules/BootNet/BootNet.h b/dev/boot/modules/BootNet/BootNet.h index 2bf330df..aba7924f 100644 --- a/dev/boot/modules/BootNet/BootNet.h +++ b/dev/boot/modules/BootNet/BootNet.h @@ -27,7 +27,7 @@ typedef struct BOOTNET_INTERNET_HEADER Kernel::Char Name[kBootNetNameLen]; /// example: Modjo Kernel::Int32 Length; /// the patch length. Kernel::Char Target[kBootNetNameLen]; /// the target file. - Kernel::Boolean ImpliesEEPROM : 1; /// does it imply an EEPROM reprogram? + Kernel::Boolean ImpliesProgram : 1; /// does it imply an EEPROM reprogram? Kernel::Boolean Preflight : 1; /// is it a preflight packet. Kernel::Char Data[]; /// non preflight packet has a patch blob for a **PatchTarget** } ATTRIBUTE(packed) BOOTNET_INTERNET_HEADER; diff --git a/dev/boot/modules/BootNet/BootNetStartup.S b/dev/boot/modules/BootNet/BootNetStartup.S new file mode 100644 index 00000000..976c5e88 --- /dev/null +++ b/dev/boot/modules/BootNet/BootNetStartup.S @@ -0,0 +1,22 @@ +;; /* +;; * ======================================================== +;; * +;; * BootZ +;; * Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. +;; * +;; * ======================================================== +;; */ + +#ifdef __NE_AMD64__ +.code64 +.intel_syntax noprefix +#endif + +#define kTypeDriver 101 +#define kArchAmd64 122 +#define kHandoverMagic 0xBADCC + +.section .ldr + +.quad kHandoverMagic +.word kTypeDriver diff --git a/dev/boot/modules/SysChk/Boot.S b/dev/boot/modules/SysChk/Boot.S deleted file mode 100644 index 976c5e88..00000000 --- a/dev/boot/modules/SysChk/Boot.S +++ /dev/null @@ -1,22 +0,0 @@ -;; /* -;; * ======================================================== -;; * -;; * BootZ -;; * Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. -;; * -;; * ======================================================== -;; */ - -#ifdef __NE_AMD64__ -.code64 -.intel_syntax noprefix -#endif - -#define kTypeDriver 101 -#define kArchAmd64 122 -#define kHandoverMagic 0xBADCC - -.section .ldr - -.quad kHandoverMagic -.word kTypeDriver diff --git a/dev/boot/modules/SysChk/SysChkStartup.S b/dev/boot/modules/SysChk/SysChkStartup.S new file mode 100644 index 00000000..976c5e88 --- /dev/null +++ b/dev/boot/modules/SysChk/SysChkStartup.S @@ -0,0 +1,22 @@ +;; /* +;; * ======================================================== +;; * +;; * BootZ +;; * Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. +;; * +;; * ======================================================== +;; */ + +#ifdef __NE_AMD64__ +.code64 +.intel_syntax noprefix +#endif + +#define kTypeDriver 101 +#define kArchAmd64 122 +#define kHandoverMagic 0xBADCC + +.section .ldr + +.quad kHandoverMagic +.word kTypeDriver diff --git a/dev/boot/src/HEL/AMD64/BootEFI.cc b/dev/boot/src/HEL/AMD64/BootEFI.cc index 076055b9..ef9af9ca 100644 --- a/dev/boot/src/HEL/AMD64/BootEFI.cc +++ b/dev/boot/src/HEL/AMD64/BootEFI.cc @@ -82,8 +82,8 @@ EfiGUID kEfiGlobalNamespaceVarGUID = { /// @param image_handle Handle of this image. /// @param sys_table The system table of it. /// @return nothing, never returns. -EFI_EXTERN_C EFI_API Int32 ModuleMain(EfiHandlePtr image_handle, - EfiSystemTable* sys_table) +EFI_EXTERN_C EFI_API Int32 ModuleMain(EfiHandlePtr image_handle, + EfiSystemTable* sys_table) { InitEFI(sys_table); ///! Init the EFI library. @@ -202,7 +202,7 @@ EFI_EXTERN_C EFI_API Int32 ModuleMain(EfiHandlePtr image_handle, //-----------------------------------------------------------// SizeT lookup_index = 0UL; - SizeT entry_count = size_struct_ptr / sz_desc; + SizeT entry_count = size_struct_ptr / sz_desc; for (; lookup_index < entry_count; ++lookup_index) { diff --git a/dev/boot/src/HEL/ARM64/BootEFI.cc b/dev/boot/src/HEL/ARM64/BootEFI.cc index adce693e..b6f28351 100644 --- a/dev/boot/src/HEL/ARM64/BootEFI.cc +++ b/dev/boot/src/HEL/ARM64/BootEFI.cc @@ -78,8 +78,8 @@ EXTERN EfiBootServices* BS; /// @param image_handle Handle of this image. /// @param sys_table The system table of it. /// @return nothing, never returns. -EFI_EXTERN_C EFI_API Int32 ModuleMain(EfiHandlePtr image_handle, - EfiSystemTable* sys_table) +EFI_EXTERN_C EFI_API Int32 ModuleMain(EfiHandlePtr image_handle, + EfiSystemTable* sys_table) { InitEFI(sys_table); ///! Init the EFI library. diff --git a/dev/boot/src/New+Delete.cc b/dev/boot/src/New+Delete.cc index b9982923..3e3cf48f 100644 --- a/dev/boot/src/New+Delete.cc +++ b/dev/boot/src/New+Delete.cc @@ -41,7 +41,7 @@ void operator delete(void* buf) { if (!buf) return; - + BS->FreePool(buf); } diff --git a/dev/kernel/CFKit/GUIDWrapper.h b/dev/kernel/CFKit/GUIDWrapper.h index a92fcbf3..e58fcc69 100644 --- a/dev/kernel/CFKit/GUIDWrapper.h +++ b/dev/kernel/CFKit/GUIDWrapper.h @@ -10,11 +10,11 @@ #include #include -/* GUID for C++ Components */ +/* GUID for C++ classes. */ #define kXRNNil "@{........-....-M...-N...-............}" -// eXtensible Resource Information +/// @brief eXtended Resource Namespace namespace CF::XRN { using namespace Kernel; diff --git a/dev/kernel/CFKit/Utils.h b/dev/kernel/CFKit/Utils.h index cc65bbee..b2a8b708 100644 --- a/dev/kernel/CFKit/Utils.h +++ b/dev/kernel/CFKit/Utils.h @@ -4,6 +4,7 @@ #include #include +/// @brief CFKit namespace CF { using namespace Kernel; diff --git a/dev/kernel/FirmwareKit/CoreBoot/BootNet.h b/dev/kernel/FirmwareKit/CoreBoot/BootNet.h index a86ea81a..e3cda0ba 100644 --- a/dev/kernel/FirmwareKit/CoreBoot/BootNet.h +++ b/dev/kernel/FirmwareKit/CoreBoot/BootNet.h @@ -24,7 +24,7 @@ typedef struct BOOTNET_INTERNET_HEADER Kernel::Char Name[kBootNetNameLen]; /// example: Modjo Kernel::Int32 Length; /// the patch length. Kernel::Char Target[kBootNetNameLen]; /// the target file. - Kernel::Boolean ImpliesEEPROM : 1; /// does it imply an EEPROM reprogram? + Kernel::Boolean ImpliesProgram : 1; /// does it imply an EEPROM program? Kernel::Boolean Preflight : 1; /// is it a preflight packet. Kernel::Char Data[]; /// non preflight packet has a patch blob for a **PatchTarget** } ATTRIBUTE(packed) BOOTNET_INTERNET_HEADER; diff --git a/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h b/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h index 80d3307b..d2711025 100644 --- a/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h +++ b/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h @@ -12,11 +12,11 @@ namespace Firmware::Detail::CoreBoot { using namespace Kernel; - struct LEHeader; + struct COREBOOT_LINEAR_EXEC; /// @brief Linear Executable Header /// @author Amlal El Mahrouss - struct ATTRIBUTE(aligned(4)) LEHeader + struct ATTRIBUTE(aligned(4)) COREBOOT_LINEAR_EXEC { const Char fMagic[2]; // magic number const Char fName[10]; // operating system name @@ -24,8 +24,13 @@ namespace Firmware::Detail::CoreBoot const UInt32 fStartAddress; // start address (master/slave(s) thread) #ifdef NE_IS_EXTENDED_COREBOOT - const UIntPtr fMasterStructure; // master structure for MP/PM and device tree and such (ARM) + const UIntPtr fMasterStructure; // master structure for MP/PM and device tree and such. (ARM) const UIntPtr fMasterStructureVersion; // master structure version. #endif + +#ifdef NE_IS_MBCI_COREBOOT + const UIntPtr fMBCIStructure; // MBCI structure for MBCI (ARM) + const UIntPtr fMBCIStructureVersion; // MBCI structure version. +#endif }; } // namespace Firmware::Detail::CoreBoot diff --git a/dev/kernel/FirmwareKit/EPM.h b/dev/kernel/FirmwareKit/EPM.h index a5cb9fe7..548bb9a7 100644 --- a/dev/kernel/FirmwareKit/EPM.h +++ b/dev/kernel/FirmwareKit/EPM.h @@ -101,10 +101,10 @@ struct PACKED EPM_PART_BLOCK enum { kEPMInvalid = 0x00, - kEPMGenericOS = 0xcf, /// @brief Generic OS + kEPMGeneric = 0xcf, /// @brief Generic OS kEPMLinux = 0x8f, /// @brief Linux on EPM kEPMBSD = 0x9f, /// @brief Berkeley Soft. Distribution - kEPMNeOS = 0x1f, /// @brief NeKernel. + kEPMNeKernel = 0x1f, /// @brief NeKernel. kEPMInvalidOS = 0xff, }; diff --git a/dev/kernel/HALKit/AMD64/HalKernelMain.cc b/dev/kernel/HALKit/AMD64/HalKernelMain.cc index 0ebba546..0d58bb8a 100644 --- a/dev/kernel/HALKit/AMD64/HalKernelMain.cc +++ b/dev/kernel/HALKit/AMD64/HalKernelMain.cc @@ -98,6 +98,8 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept kout << "Boot Time: " << Kernel::number(kEndTim - kStartTim) << kendl; + Kernel::NeFS::fs_init_nefs(); + Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); Kernel::HAL::Register64 idt_reg; diff --git a/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc b/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc index 5819f1d9..63796393 100644 --- a/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc +++ b/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc @@ -17,7 +17,7 @@ namespace Kernel::HAL /***********************************************************************************/ /// \brief Page store type. /***********************************************************************************/ - struct NE_PAGE_STORE final + struct PageStore final { struct { @@ -43,9 +43,9 @@ namespace Kernel::HAL return pte && pte->User; } - static NE_PAGE_STORE& The() + static PageStore& The() { - static NE_PAGE_STORE the; + static PageStore the; return the; } }; @@ -60,7 +60,7 @@ namespace Kernel::HAL UInt64 cr3 = (UInt64)hal_read_cr3(); - NE_PAGE_STORE& page_store = NE_PAGE_STORE::The(); + PageStore& page_store = PageStore::The(); // Extract the indices from the virtual address UInt64 pml4_index = ((UIntPtr)virtual_address >> 39) & kPmlIndexMask; @@ -123,7 +123,7 @@ namespace Kernel::HAL UInt64 cr3 = (UInt64)hal_read_cr3(); - NE_PAGE_STORE& page_store = NE_PAGE_STORE::The(); + PageStore& page_store = PageStore::The(); // Extract the indices from the virtual address UInt64 pml4_index = ((UIntPtr)virtual_address >> 39) & kPmlIndexMask; @@ -189,7 +189,7 @@ namespace Kernel::HAL mmi_page_status(pt_entry); - NE_PAGE_STORE& page_store = NE_PAGE_STORE::The(); + PageStore& page_store = PageStore::The(); // Update Internal store. diff --git a/dev/kernel/HALKit/AMD64/PCI/DMA.cc b/dev/kernel/HALKit/AMD64/PCI/DMA.cc index 747fab94..33cff13e 100644 --- a/dev/kernel/HALKit/AMD64/PCI/DMA.cc +++ b/dev/kernel/HALKit/AMD64/PCI/DMA.cc @@ -5,6 +5,7 @@ ------------------------------------------- */ #include +#include namespace Kernel { @@ -26,37 +27,34 @@ namespace Kernel if (offset == 0) return false; - kout << "[DMAWrapper::IsIn] Checking offset..\n"; + kout << "[DMAWrapper::IsIn] Checking offset...\r"; return reinterpret_cast(this->fAddress) >= offset; } bool DMAWrapper::Write(const UIntPtr& bit, const UInt32& offset) { - kout << "[DMAWrapper::Read] Checking this->fAddress..\n"; + kout << "[DMAWrapper::Read] Checking this->fAddress...\r"; if (!this->fAddress) return false; - kout << "[DMAWrapper::Write] Writing at address..\n"; + kout << "[DMAWrapper::Write] Writing at address: " << hex_number(reinterpret_cast(this->fAddress) + offset) << kendl; - auto addr = - (volatile UIntPtr*)(reinterpret_cast(this->fAddress) + offset); - *addr = bit; + ke_dma_write(reinterpret_cast(this->fAddress), offset, bit); return true; } UIntPtr DMAWrapper::Read(const UInt32& offset) { - kout << "[DMAWrapper::Read] Checking this->fAddress..\n"; + kout << "[DMAWrapper::Read] Checking this->fAddress...\r"; if (!this->fAddress) - return 0; + return ~0; - kout << "[DMAWrapper::Read] Reading this->fAddress..\n"; + kout << "[DMAWrapper::Write] Writing at address: " << hex_number(reinterpret_cast(this->fAddress) + offset) << kendl; - return *(volatile UIntPtr*)(reinterpret_cast(this->fAddress) + offset); - ; + return ke_dma_read(reinterpret_cast(this->fAddress), offset); } UIntPtr DMAWrapper::operator[](const UIntPtr& offset) @@ -70,7 +68,7 @@ namespace Kernel return {}; OwnPtr> dmaOwnPtr = - make_ptr, char*>(reinterpret_cast(dma->fAddress)); + mm_make_own_ptr, char*>(reinterpret_cast(dma->fAddress)); if (!dmaOwnPtr) return {}; diff --git a/dev/kernel/HALKit/AMD64/Storage/DMA+Generic.cc b/dev/kernel/HALKit/AMD64/Storage/DMA+Generic.cc index 300b959f..5aabf144 100644 --- a/dev/kernel/HALKit/AMD64/Storage/DMA+Generic.cc +++ b/dev/kernel/HALKit/AMD64/Storage/DMA+Generic.cc @@ -76,7 +76,7 @@ Boolean drv_std_init(UInt16 Bus, UInt8 Drive, UInt16& OutBus, UInt8& OutMaster) /// IDE interface if (kATADevice.Subclass() == 0x01) { - + break; } } diff --git a/dev/kernel/NewKit/Json.h b/dev/kernel/NewKit/Json.h index d159d915..5f979ceb 100644 --- a/dev/kernel/NewKit/Json.h +++ b/dev/kernel/NewKit/Json.h @@ -7,7 +7,7 @@ #pragma once -// last-rev: 30/01/24 +// last-rev: 02/04/25 #include #include @@ -15,9 +15,10 @@ #include #include -#define kMaxJsonPath 8196 -#define kJSONLen 256 -#define kJSONNull "[]" +#define kJSONMaxLen (8196) +#define kJSONLen (256) +#define kJSONNullArr "[]" +#define kJSONNullObj "{}" namespace Kernel { @@ -27,9 +28,9 @@ namespace Kernel public: explicit Json() { - auto len = kJSONLen; + auto len = kJSONMaxLen; KString key = KString(len); - key += kJSONNull; + key += kJSONNullObj; this->AsKey() = key; this->AsValue() = key; @@ -97,7 +98,7 @@ namespace Kernel SizeT key_len = 0; SizeT value_len = 0; - Json type(kMaxJsonPath, kMaxJsonPath); + Json type(kJSONMaxLen, kJSONMaxLen); for (SizeT i = 1; i < len; ++i) { @@ -116,6 +117,12 @@ namespace Kernel } else { + if (full_array[i] == '\'') + { + type.AsValue().Data()[value_len] = 0; + break; + } + type.AsValue().Data()[value_len] = full_array[i]; ++value_len; @@ -128,9 +135,16 @@ namespace Kernel if (full_array[i] == ':') { - probe_value = true; type.AsKey().Data()[key_len] = 0; ++key_len; + + ++i; + + while (full_array[i] == ' ' || + full_array[i] == '\t') + ++i; + + probe_value = true; } else { diff --git a/dev/kernel/NewKit/Macros.h b/dev/kernel/NewKit/Macros.h index 264d74d7..eda454f9 100644 --- a/dev/kernel/NewKit/Macros.h +++ b/dev/kernel/NewKit/Macros.h @@ -147,8 +147,8 @@ #define BOOL Kernel::Boolean -#ifdef RTL_INIT_OBJECT -#undef RTL_INIT_OBJECT -#endif // ifdef RTL_INIT_OBJECT +#ifdef rtl_init_object +#undef rtl_init_object +#endif // ifdef rtl_init_object -#define RTL_INIT_OBJECT(OBJ, TYPE, ...) TYPE OBJ = TYPE(__VA_ARGS__) +#define rtl_init_object(OBJ, TYPE, ...) TYPE OBJ = TYPE(__VA_ARGS__) diff --git a/dev/kernel/NewKit/OwnPtr.h b/dev/kernel/NewKit/OwnPtr.h index b292aafc..f15bc339 100644 --- a/dev/kernel/NewKit/OwnPtr.h +++ b/dev/kernel/NewKit/OwnPtr.h @@ -58,7 +58,8 @@ namespace Kernel T* operator->() const { return fCls; - }; + } + T* Raw() { return fCls; @@ -83,7 +84,7 @@ namespace Kernel }; template - OwnPtr make_ptr(Args... args) + inline OwnPtr mm_make_own_ptr(Args... args) { OwnPtr ret; ret.template New(forward(args)...); diff --git a/dev/kernel/StorageKit/ATA.h b/dev/kernel/StorageKit/ATA.h index b5e4b2d9..917fa12b 100644 --- a/dev/kernel/StorageKit/ATA.h +++ b/dev/kernel/StorageKit/ATA.h @@ -34,19 +34,18 @@ namespace Kernel const Char* Name() const override; const UInt16& GetIO(); - Void SetIO(const UInt16& io); + Void SetIO(const UInt16& io); const UInt16& GetMaster(); - Void SetMaster(const UInt16& master); + Void SetMaster(const UInt16& master); const UInt32& GetIndex(); - Void SetIndex(const UInt32& drv); + Void SetIndex(const UInt32& drv); private: void (*fCleanup)(void) = {nullptr}; UInt32 fDriveIndex{0U}; UInt16 fIO, fMaster{0U}; - }; /// @brief Initialize an PIO device (StorageKit function) diff --git a/dev/kernel/src/Json.cc b/dev/kernel/src/Json.cc index ec5f2c7e..187da6fd 100644 --- a/dev/kernel/src/Json.cc +++ b/dev/kernel/src/Json.cc @@ -7,4 +7,4 @@ #include /// @brief Undefined object, is null in length. -RTL_INIT_OBJECT(Kernel::Json::kNull, Kernel::Json); +rtl_init_object(Kernel::Json::kNull, Kernel::Json); diff --git a/dev/kernel/src/KernelProcessScheduler.cc b/dev/kernel/src/KernelProcessScheduler.cc index 340adb39..2a2384e2 100644 --- a/dev/kernel/src/KernelProcessScheduler.cc +++ b/dev/kernel/src/KernelProcessScheduler.cc @@ -7,8 +7,20 @@ ------------------------------------------- */ +#include + /***********************************************************************************/ /// @file KernelProcessScheduler.cc /// @brief Privileged/Ring-0 process scheduler. /// @author Amlal El Mahrouss (amlal@nekernel.org) /***********************************************************************************/ + +namespace Kernel +{ + /***********************************************************************************/ + /// @brief Exit Code global variable. + /***********************************************************************************/ + + STATIC UInt32 kLastExitCode = 0U; + +} // namespace Kernel \ No newline at end of file -- cgit v1.2.3