diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-01-07 08:33:01 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-01-07 08:33:01 +0100 |
| commit | 3ce4b68fc3f1ad9ead503bb3f69bff11b4a3183a (patch) | |
| tree | 9d679d2092e71a35305ae6c6c9554bfc6528b6ca /dev/Kernel | |
| parent | ecf2a09a48ef029d09075af744c04e643661ec27 (diff) | |
FIX: KAN-12 (EPM GPF)
ADD: Dylib object instead of DLL objects.
ADD: Introduce CoreGfx instead of GfxMgr.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel')
| -rw-r--r-- | dev/Kernel/FirmwareKit/EFI/API.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalKernelMain.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalKernelPanic.cc | 4 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/ARM64/HalKernelMain.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/ARM64/HalKernelPanic.cc | 4 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/CodeMgr.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/DriveMgr.h | 5 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/IDylibObject.h (renamed from dev/Kernel/KernelKit/IDLLObject.h) | 10 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/IPEFDylibObject.h (renamed from dev/Kernel/KernelKit/IPEFDLLObject.h) | 16 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/UserProcessScheduler.h | 4 | ||||
| -rw-r--r-- | dev/Kernel/src/DriveMgr.cc | 44 | ||||
| -rw-r--r-- | dev/Kernel/src/FS/NeFS.cc | 5 | ||||
| -rw-r--r-- | dev/Kernel/src/IDylibObject.cc (renamed from dev/Kernel/src/IDLLObject.cc) | 2 | ||||
| -rw-r--r-- | dev/Kernel/src/IPEFDylibObject.cc (renamed from dev/Kernel/src/IPEFDLLObject.cc) | 24 | ||||
| -rw-r--r-- | dev/Kernel/src/UserProcessScheduler.cc | 4 |
16 files changed, 67 insertions, 65 deletions
diff --git a/dev/Kernel/FirmwareKit/EFI/API.h b/dev/Kernel/FirmwareKit/EFI/API.h index ee4fcebb..4cf60df4 100644 --- a/dev/Kernel/FirmwareKit/EFI/API.h +++ b/dev/Kernel/FirmwareKit/EFI/API.h @@ -21,7 +21,7 @@ class BTextWriter; #define __BOOTKIT_NO_INCLUDE__ 1 #include <BootKit/BootKit.h> -#include <Mod/GfxMgr/FBMgr.h> +#include <Mod/CoreGfx/FBMgr.h> #endif // ifdef __ZBAOSLDR__ inline EfiSystemTable* ST = nullptr; diff --git a/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc index 408826d0..6563f23c 100644 --- a/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc +++ b/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc @@ -11,7 +11,7 @@ #include <KernelKit/Semaphore.h> #include <KernelKit/UserProcessScheduler.h> #include <KernelKit/Timer.h> -#include <Mod/GfxMgr/TextMgr.h> +#include <Mod/CoreGfx/TextMgr.h> #include <NewKit/KernelPanic.h> #include <KernelKit/HardwareThreadScheduler.h> diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc index 7b3e2345..e27e2efb 100644 --- a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc +++ b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc @@ -11,7 +11,7 @@ #include <Mod/ACPI/ACPIFactoryInterface.h> #include <NetworkKit/IPC.h> #include <CFKit/Property.h> -#include <Mod/GfxMgr/TextMgr.h> +#include <Mod/CoreGfx/TextMgr.h> EXTERN_C Kernel::VoidPtr kInterruptVectorTable[]; EXTERN_C Kernel::VoidPtr mp_user_switch_proc; diff --git a/dev/Kernel/HALKit/AMD64/HalKernelPanic.cc b/dev/Kernel/HALKit/AMD64/HalKernelPanic.cc index 6f8b292a..18296d22 100644 --- a/dev/Kernel/HALKit/AMD64/HalKernelPanic.cc +++ b/dev/Kernel/HALKit/AMD64/HalKernelPanic.cc @@ -11,8 +11,8 @@ #include <NewKit/KString.h> #include <FirmwareKit/Handover.h> #include <KernelKit/FileMgr.h> -#include <Mod/GfxMgr/FBMgr.h> -#include <Mod/GfxMgr/TextMgr.h> +#include <Mod/CoreGfx/FBMgr.h> +#include <Mod/CoreGfx/TextMgr.h> #include <NewKit/Utils.h> /* Each error code is attributed with an ID, which will prompt a string onto the diff --git a/dev/Kernel/HALKit/ARM64/HalKernelMain.cc b/dev/Kernel/HALKit/ARM64/HalKernelMain.cc index 1869d97b..1a520994 100644 --- a/dev/Kernel/HALKit/ARM64/HalKernelMain.cc +++ b/dev/Kernel/HALKit/ARM64/HalKernelMain.cc @@ -6,7 +6,7 @@ #include "HALKit/ARM64/ApplicationProcessor.h" #include <ArchKit/ArchKit.h> -#include <Mod/GfxMgr/FBMgr.h> +#include <Mod/CoreGfx/FBMgr.h> #include <FirmwareKit/Handover.h> #include <KernelKit/FileMgr.h> #include <KernelKit/Heap.h> diff --git a/dev/Kernel/HALKit/ARM64/HalKernelPanic.cc b/dev/Kernel/HALKit/ARM64/HalKernelPanic.cc index 4cd61aff..cca564f8 100644 --- a/dev/Kernel/HALKit/ARM64/HalKernelPanic.cc +++ b/dev/Kernel/HALKit/ARM64/HalKernelPanic.cc @@ -11,8 +11,8 @@ #include <NewKit/KString.h> #include <FirmwareKit/Handover.h> #include <KernelKit/FileMgr.h> -#include <Mod/GfxMgr/FBMgr.h> -#include <Mod/GfxMgr/TextMgr.h> +#include <Mod/CoreGfx/FBMgr.h> +#include <Mod/CoreGfx/TextMgr.h> #include <NewKit/Utils.h> /* Each error code is attributed with an ID, which will prompt a string onto the diff --git a/dev/Kernel/KernelKit/CodeMgr.h b/dev/Kernel/KernelKit/CodeMgr.h index d3b9f39a..12a63dc0 100644 --- a/dev/Kernel/KernelKit/CodeMgr.h +++ b/dev/Kernel/KernelKit/CodeMgr.h @@ -16,7 +16,7 @@ #include <KernelKit/PECodeMgr.h> #include <KernelKit/PEFCodeMgr.h> -#include <KernelKit/IPEFDLLObject.h> +#include <KernelKit/IPEFDylibObject.h> namespace Kernel { diff --git a/dev/Kernel/KernelKit/DriveMgr.h b/dev/Kernel/KernelKit/DriveMgr.h index e907acf8..4c879ab5 100644 --- a/dev/Kernel/KernelKit/DriveMgr.h +++ b/dev/Kernel/KernelKit/DriveMgr.h @@ -164,6 +164,11 @@ namespace Kernel /// @brief Fetches the main drive. /// @return the new drive as a trait. DriveTrait io_construct_main_drive(Void) noexcept; + + namespace Detect + { + Void io_detect_drive(DriveTrait& trait); + } } // namespace Kernel #endif /* ifndef INC_DRIVE_MANAGER_H */ diff --git a/dev/Kernel/KernelKit/IDLLObject.h b/dev/Kernel/KernelKit/IDylibObject.h index 035f0013..d4c93034 100644 --- a/dev/Kernel/KernelKit/IDLLObject.h +++ b/dev/Kernel/KernelKit/IDylibObject.h @@ -12,16 +12,16 @@ #include <NewKit/Defines.h> #include <CompilerKit/CompilerKit.h> -#define ZKA_DLL_OBJECT : public IDLLObject +#define ZKA_DLL_OBJECT : public IDylibObject namespace Kernel { /// @brief DLL class object. A handle to a shared library. - class IDLLObject + class IDylibObject { public: - explicit IDLLObject() = default; - virtual ~IDLLObject() = default; + explicit IDylibObject() = default; + virtual ~IDylibObject() = default; struct DLL_TRAITS final { @@ -34,7 +34,7 @@ namespace Kernel } }; - ZKA_COPY_DEFAULT(IDLLObject); + ZKA_COPY_DEFAULT(IDylibObject); virtual DLL_TRAITS** GetAddressOf() = 0; virtual DLL_TRAITS* Get() = 0; diff --git a/dev/Kernel/KernelKit/IPEFDLLObject.h b/dev/Kernel/KernelKit/IPEFDylibObject.h index 1781c589..c8a69690 100644 --- a/dev/Kernel/KernelKit/IPEFDLLObject.h +++ b/dev/Kernel/KernelKit/IPEFDylibObject.h @@ -14,7 +14,7 @@ #include <NewKit/Defines.h> #include <KernelKit/PEFCodeMgr.h> #include <KernelKit/UserProcessScheduler.h> -#include <KernelKit/IDLLObject.h> +#include <KernelKit/IDylibObject.h> namespace Kernel { @@ -22,14 +22,14 @@ namespace Kernel * @brief Shared Library class * Load library from this class */ - class IPEFDLLObject final ZKA_DLL_OBJECT + class IPEFDylibObject final ZKA_DLL_OBJECT { public: - explicit IPEFDLLObject() = default; - ~IPEFDLLObject() = default; + explicit IPEFDylibObject() = default; + ~IPEFDylibObject() = default; public: - ZKA_COPY_DEFAULT(IPEFDLLObject); + ZKA_COPY_DEFAULT(IPEFDylibObject); private: DLL_TRAITS* fMounted{nullptr}; @@ -97,10 +97,10 @@ namespace Kernel PEFLoader* fLoader{nullptr}; }; - typedef IPEFDLLObject* IDLL; + typedef IPEFDylibObject* IDylib; - EXTERN_C IDLL rtl_init_dylib(UserThread& header); - EXTERN_C Void rtl_fini_dylib(UserThread& header, IDLL lib, Bool* successful); + EXTERN_C IDylib rtl_init_dylib(UserThread& header); + EXTERN_C Void rtl_fini_dylib(UserThread& header, IDylib lib, Bool* successful); } // namespace Kernel #endif /* ifndef __KERNELKIT_SHARED_OBJECT_H__ */ diff --git a/dev/Kernel/KernelKit/UserProcessScheduler.h b/dev/Kernel/KernelKit/UserProcessScheduler.h index a08a5dc1..8212fdc2 100644 --- a/dev/Kernel/KernelKit/UserProcessScheduler.h +++ b/dev/Kernel/KernelKit/UserProcessScheduler.h @@ -30,7 +30,7 @@ namespace Kernel { //! @note Forward class declarations. - class IDLLObject; + class IDylibObject; class UserThread; class UserProcessTeam; class UserProcessScheduler; @@ -163,7 +163,7 @@ namespace Kernel UInt8* StackReserve{nullptr}; UserProcessImage Image{}; SizeT StackSize{kSchedMaxStackSz}; - IDLLObject* DylibDelegate{nullptr}; + IDylibObject* DylibDelegate{nullptr}; SizeT MemoryCursor{0UL}; SizeT MemoryLimit{kSchedMaxMemoryLimit}; SizeT UsedMemory{0UL}; diff --git a/dev/Kernel/src/DriveMgr.cc b/dev/Kernel/src/DriveMgr.cc index 8e8d5ab2..8ac5bdff 100644 --- a/dev/Kernel/src/DriveMgr.cc +++ b/dev/Kernel/src/DriveMgr.cc @@ -154,34 +154,34 @@ namespace Kernel return trait; } - namespace Detail + namespace Detect { - Void ioi_detect_drive(DriveTrait* trait) + Void io_detect_drive(DriveTrait& trait) { - static EPM_BOOT_BLOCK block_struct; + EPM_BOOT_BLOCK block_struct; - trait->fPacket.fPacketLba = kEPMBootBlockLba; - trait->fPacket.fPacketSize = sizeof(EPM_BOOT_BLOCK); - trait->fPacket.fPacketContent = &block_struct; + trait.fPacket.fPacketLba = kEPMBootBlockLba; + trait.fPacket.fPacketSize = sizeof(EPM_BOOT_BLOCK); + trait.fPacket.fPacketContent = &block_struct; - rt_copy_memory((VoidPtr) "fs/detect-packet", trait->fPacket.fPacketMime, + rt_copy_memory((VoidPtr) "fs/detect-packet", trait.fPacket.fPacketMime, rt_string_len("fs/detect-packet")); - trait->fInit(&trait->fPacket); + trait.fInit(&trait.fPacket); - trait->fInput(&trait->fPacket); + trait.fInput(&trait.fPacket); - if (rt_string_cmp(((BOOT_BLOCK_STRUCT*)trait->fPacket.fPacketContent)->Magic, kEPMMagic, kEPMMagicLength) == 0) + if (rt_string_cmp(((BOOT_BLOCK_STRUCT*)trait.fPacket.fPacketContent)->Magic, kEPMMagic, kEPMMagicLength) == 0) { - trait->fPacket.fPacketReadOnly = NO; - trait->fKind = kMassStorageDisc | kEPMDrive; + trait.fPacket.fPacketReadOnly = NO; + trait.fKind = kMassStorageDisc | kEPMDrive; kcout << "Formatted Disk is EPM (Mass Storage)\r"; } else { - trait->fPacket.fPacketReadOnly = YES; - trait->fKind = kMassStorageDisc | kUnformattedDrive | kReadOnlyDrive; + trait.fPacket.fPacketReadOnly = YES; + trait.fKind = kMassStorageDisc | kUnformattedDrive | kReadOnlyDrive; kcout << "Scheme Found: " << block_struct.Name << endl; @@ -189,12 +189,12 @@ namespace Kernel kcout << "Disk partition is unknown (Read Only)\r"; } - rt_copy_memory((VoidPtr) "*/*", trait->fPacket.fPacketMime, + rt_copy_memory((VoidPtr) "*/*", trait.fPacket.fPacketMime, rt_string_len("*/*")); - trait->fPacket.fPacketLba = 0; - trait->fPacket.fPacketSize = 0UL; - trait->fPacket.fPacketContent = nullptr; + trait.fPacket.fPacketLba = 0; + trait.fPacket.fPacketSize = 0UL; + trait.fPacket.fPacketContent = nullptr; } } // namespace Detail @@ -202,9 +202,9 @@ namespace Kernel /// @return the new drive. (returns kEPMDrive if EPM formatted) DriveTrait io_construct_main_drive() noexcept { - DriveTrait trait{}; + DriveTrait trait; - const auto kMainDrive = "/Mount/OS:"; + constexpr auto kMainDrive = "/Mount/OS:"; rt_copy_memory((VoidPtr)kMainDrive, trait.fName, rt_string_len(kMainDrive)); @@ -216,9 +216,9 @@ namespace Kernel trait.fInit = io_drv_init; trait.fDriveKind = io_drv_kind; - kcout << "Detecting partition scheme of: " << trait.fName << ".\r"; + Detect::io_detect_drive(trait); - Detail::ioi_detect_drive(&trait); + kcout << "Detecting partition scheme of: " << trait.fName << ".\r"; return trait; } diff --git a/dev/Kernel/src/FS/NeFS.cc b/dev/Kernel/src/FS/NeFS.cc index b0a7c6c6..902b57a8 100644 --- a/dev/Kernel/src/FS/NeFS.cc +++ b/dev/Kernel/src/FS/NeFS.cc @@ -1055,10 +1055,7 @@ namespace Kernel::Detail kcout << "Creating A:\r"; kDiskMountpoint.A() = io_construct_main_drive(); - kDiskMountpoint.B() = io_construct_blank_drive(); - kDiskMountpoint.C() = io_construct_blank_drive(); - kDiskMountpoint.D() = io_construct_blank_drive(); - + kcout << "Creating A: [ OK ]\r"; return true; diff --git a/dev/Kernel/src/IDLLObject.cc b/dev/Kernel/src/IDylibObject.cc index f0129eca..27e2d14f 100644 --- a/dev/Kernel/src/IDLLObject.cc +++ b/dev/Kernel/src/IDylibObject.cc @@ -7,7 +7,7 @@ * ======================================================== */ -#include <KernelKit/IDLLObject.h> +#include <KernelKit/IDylibObject.h> #include <KernelKit/DebugOutput.h> #include <KernelKit/UserProcessScheduler.h> diff --git a/dev/Kernel/src/IPEFDLLObject.cc b/dev/Kernel/src/IPEFDylibObject.cc index 1b8d2451..1e2831ef 100644 --- a/dev/Kernel/src/IPEFDLLObject.cc +++ b/dev/Kernel/src/IPEFDylibObject.cc @@ -9,7 +9,7 @@ #include <KernelKit/DebugOutput.h> #include <KernelKit/PEF.h> -#include <KernelKit/IPEFDLLObject.h> +#include <KernelKit/IPEFDylibObject.h> #include <KernelKit/UserProcessScheduler.h> #include <KernelKit/ThreadLocalStorage.h> #include <NewKit/Defines.h> @@ -31,41 +31,41 @@ using namespace Kernel; /***********************************************************************************/ -/// @file IPEFDLLObject.cc -/// @brief PEF's DLL runtime. +/// @file IPEFDylibObject.cc +/// @brief PEF's Dylib runtime. /***********************************************************************************/ /***********************************************************************************/ /** @brief Library initializer. */ /***********************************************************************************/ -EXTERN_C IDLL rtl_init_dylib(UserThread& header) +EXTERN_C IDylib rtl_init_dylib(UserThread& thread) { - IDLL dll_obj = tls_new_class<IPEFDLLObject>(); + IDylib dll_obj = tls_new_class<IPEFDylibObject>(); if (!dll_obj) { - header.Crash(); + thread.Crash(); return nullptr; } - dll_obj->Mount(tls_new_class<IPEFDLLObject::DLL_TRAITS>()); + dll_obj->Mount(new IPEFDylibObject::DLL_TRAITS()); if (!dll_obj->Get()) { tls_delete_class(dll_obj); - header.Crash(); + thread.Crash(); return nullptr; } dll_obj->Get()->ImageObject = - header.Image.fBlob; + thread.Image.fBlob; if (!dll_obj->Get()->ImageObject) { tls_delete_class(dll_obj); - header.Crash(); + thread.Crash(); return nullptr; } @@ -83,7 +83,7 @@ EXTERN_C IDLL rtl_init_dylib(UserThread& header) /** @param successful Reports if successful or not. */ /***********************************************************************************/ -EXTERN_C Void rtl_fini_dylib(UserThread& header, IDLL dll_obj, Bool* successful) +EXTERN_C Void rtl_fini_dylib(UserThread& thread, IDylib dll_obj, Bool* successful) { MUST_PASS(successful); @@ -91,7 +91,7 @@ EXTERN_C Void rtl_fini_dylib(UserThread& header, IDLL dll_obj, Bool* successful) if (dll_obj == nullptr) { *successful = false; - header.Crash(); + thread.Crash(); } delete dll_obj->Get(); diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc index 55d3474b..6cd7fb0b 100644 --- a/dev/Kernel/src/UserProcessScheduler.cc +++ b/dev/Kernel/src/UserProcessScheduler.cc @@ -14,7 +14,7 @@ #include <KernelKit/UserProcessScheduler.h> #include <KernelKit/HardwareThreadScheduler.h> -#include <KernelKit/IPEFDLLObject.h> +#include <KernelKit/IPEFDylibObject.h> #include <ArchKit/ArchKit.h> #include <KernelKit/Heap.h> #include <NewKit/KString.h> @@ -252,7 +252,7 @@ namespace Kernel { Bool success = false; - rtl_fini_dylib(*this, reinterpret_cast<IPEFDLLObject*>(this->DylibDelegate), &success); + rtl_fini_dylib(*this, reinterpret_cast<IPEFDylibObject*>(this->DylibDelegate), &success); if (!success) { |
