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/src | |
| 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/src')
| -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 |
5 files changed, 38 insertions, 41 deletions
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) { |
