diff options
Diffstat (limited to 'dev/Kernel')
| -rw-r--r-- | dev/Kernel/CFKit/Property.h | 10 | ||||
| -rw-r--r-- | dev/Kernel/FirmwareKit/EFI/API.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc | 10 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/Processor.h | 6 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/PE.h | 4 | ||||
| -rw-r--r-- | dev/Kernel/src/Network/IPCAddr.cc | 14 | ||||
| -rw-r--r-- | dev/Kernel/src/Network/IPCMsg.cc | 10 |
7 files changed, 35 insertions, 21 deletions
diff --git a/dev/Kernel/CFKit/Property.h b/dev/Kernel/CFKit/Property.h index 162b757b..69ec13f2 100644 --- a/dev/Kernel/CFKit/Property.h +++ b/dev/Kernel/CFKit/Property.h @@ -11,8 +11,9 @@ #include <NewKit/Defines.h> #include <NewKit/Function.h> #include <NewKit/KString.h> +#include <CFKit/GUIDWrapper.h> -#define kMaxPropLen 255 +#define kMaxPropLen (255U) namespace CFKit { @@ -22,7 +23,7 @@ namespace CFKit using PropertyId = UIntPtr; /// @brief Kernel property class. - /// @example \Properties\SmpCores or \Properties\KernelVersion + /// @example /Properties/SmpCoreClass or /Properties/KernelVersionClass class Property { public: @@ -38,8 +39,9 @@ namespace CFKit KString& GetKey(); private: - KString fName{kMaxPropLen}; - PropertyId fValue{0UL}; + KString fName{kMaxPropLen}; + PropertyId fValue{0UL}; + Ref<XRN::GUID> fGUID{}; }; template <SizeT N> diff --git a/dev/Kernel/FirmwareKit/EFI/API.h b/dev/Kernel/FirmwareKit/EFI/API.h index 58775ddd..34e4a48d 100644 --- a/dev/Kernel/FirmwareKit/EFI/API.h +++ b/dev/Kernel/FirmwareKit/EFI/API.h @@ -12,7 +12,7 @@ #include <KernelKit/MSDOS.h> #include <KernelKit/PE.h> -#define kZKASubsystem 17 +#define kZKASubsystem (17) #ifdef __ZBAOSLDR__ // forward decl. diff --git a/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc index 4234f11e..c6074d72 100644 --- a/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc +++ b/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc @@ -219,15 +219,9 @@ namespace Kernel::HAL kcout << "SMP: Starting APs...\r"; + UInt32 eax, edx; kApicBaseAddress = kMADTBlock->Address; - constexpr auto kMemoryAPStart = 0x7C000; - Char* ptr_ap_code = reinterpret_cast<Char*>(kMemoryAPStart); - - SizeT hal_ap_blob_len = hal_ap_blob_end - hal_ap_blob_start; - - rt_copy_memory((Char*)hal_ap_blob_start, ptr_ap_code, hal_ap_blob_len); - while (Yes) { if (kMADTBlock->List[index].Type > 9 || @@ -252,7 +246,7 @@ namespace Kernel::HAL /// TODO: HAL helper to create an address. - hal_send_sipi(kApicBaseAddress, kAPICLocales[kSMPCount], (UInt8)(((UIntPtr)ptr_ap_code) >> 12)); + hal_send_sipi(kApicBaseAddress, kAPICLocales[kSMPCount], (UInt8)(((UIntPtr)0x7c00) >> 12)); ++kSMPCount; break; diff --git a/dev/Kernel/HALKit/AMD64/Processor.h b/dev/Kernel/HALKit/AMD64/Processor.h index acdf7e42..623c8245 100644 --- a/dev/Kernel/HALKit/AMD64/Processor.h +++ b/dev/Kernel/HALKit/AMD64/Processor.h @@ -233,14 +233,16 @@ namespace Kernel::HAL /// @param lo low byte /// @param hi high byte /***********************************************************************************/ - inline Void hal_get_msr(UInt32 msr, UInt32* lo, UInt32* hi) noexcept + inline UInt32 hal_get_msr(UInt32 msr, UInt32* lo, UInt32* hi) noexcept { if (!lo || !hi) - return; + return 0; asm volatile("rdmsr" : "=a"(*lo), "=d"(*hi) : "c"(msr)); + + return *lo + *hi; } /// @brief Set Model-specific register. diff --git a/dev/Kernel/KernelKit/PE.h b/dev/Kernel/KernelKit/PE.h index 90406a5d..f5174fc3 100644 --- a/dev/Kernel/KernelKit/PE.h +++ b/dev/Kernel/KernelKit/PE.h @@ -136,8 +136,8 @@ typedef struct LDR_IMAGE_HEADER enum { - eUserSection = 0x00000020, - cPEResourceId = 0xFFaadd00, + kUserSection = 0x00000020, + kPEResourceId = 0xFFaadd00, }; #endif /* ifndef __KERNELKIT_INC_PE_H__ */ diff --git a/dev/Kernel/src/Network/IPCAddr.cc b/dev/Kernel/src/Network/IPCAddr.cc index e69de29b..371e83d9 100644 --- a/dev/Kernel/src/Network/IPCAddr.cc +++ b/dev/Kernel/src/Network/IPCAddr.cc @@ -0,0 +1,14 @@ +/* ------------------------------------------- + + Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved. + + ------------------------------------------- */ + +#include <NetworkKit/IPC.h> +#include <KernelKit/LPC.h> +#include <KernelKit/UserProcessScheduler.h> + +namespace Kernel +{ + +} diff --git a/dev/Kernel/src/Network/IPCMsg.cc b/dev/Kernel/src/Network/IPCMsg.cc index 5e94b050..ef888ed6 100644 --- a/dev/Kernel/src/Network/IPCMsg.cc +++ b/dev/Kernel/src/Network/IPCMsg.cc @@ -1,6 +1,6 @@ /* ------------------------------------------- - Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. + Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved. ------------------------------------------- */ @@ -10,7 +10,7 @@ namespace Kernel { - /// @internal + /// @internal internal use for IPC system only. /// @brief The internal sanitize function. Bool ipc_int_sanitize_packet(IPC_MSG* pckt) { @@ -79,13 +79,15 @@ namespace Kernel if (!*pckt_in) *pckt_in = new IPC_MSG(); + MUST_PASS(*pckt_in); + if (*pckt_in) { - auto endian = rtl_deduce_endianess((*pckt_in), ((Char*)(*pckt_in))[0]); + const auto endianess = rtl_deduce_endianess((*pckt_in), ((Char*)(*pckt_in))[0]); (*pckt_in)->IpcHeaderMagic = kIPCHeaderMagic; - (*pckt_in)->IpcEndianess = static_cast<UInt8>(endian); + (*pckt_in)->IpcEndianess = static_cast<UInt8>(endianess); (*pckt_in)->IpcPacketSize = sizeof(IPC_MSG); (*pckt_in)->IpcTo.UserProcessID = 0; |
