summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/src
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-07 08:33:01 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-07 08:33:01 +0100
commit3ce4b68fc3f1ad9ead503bb3f69bff11b4a3183a (patch)
tree9d679d2092e71a35305ae6c6c9554bfc6528b6ca /dev/Kernel/src
parentecf2a09a48ef029d09075af744c04e643661ec27 (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.cc44
-rw-r--r--dev/Kernel/src/FS/NeFS.cc5
-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.cc4
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)
{