summaryrefslogtreecommitdiffhomepage
path: root/dev/zka/KernelKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-10-20 17:53:37 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-10-20 17:53:37 +0200
commit7764e88cd0032cd57fdc17a2906db9d8af9999e1 (patch)
treea373ed0682c3161ee38b77089bc8fab821304a6b /dev/zka/KernelKit
parent22e85ecdb17888268d32997b20e01cc98968cc3d (diff)
IMP: New implementations and improvements.
- Heap class allocation have been fixed. - Scheduler allocation has been fixed. - A new better flow for the kernel has been designed. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/zka/KernelKit')
-rw-r--r--dev/zka/KernelKit/DriveMgr.hxx33
-rw-r--r--dev/zka/KernelKit/Heap.hxx8
-rw-r--r--dev/zka/KernelKit/UserProcessScheduler.hxx11
3 files changed, 24 insertions, 28 deletions
diff --git a/dev/zka/KernelKit/DriveMgr.hxx b/dev/zka/KernelKit/DriveMgr.hxx
index 6e55fc04..ddff013b 100644
--- a/dev/zka/KernelKit/DriveMgr.hxx
+++ b/dev/zka/KernelKit/DriveMgr.hxx
@@ -14,6 +14,7 @@
#include <KernelKit/LPC.hxx>
#include <NewKit/Defines.hxx>
#include <NewKit/String.hxx>
+#include <NewKit/Ref.hxx>
#define kMaxDriveCountPerMountpoint (4U)
@@ -26,18 +27,18 @@ namespace Kernel
{
enum
{
- /// Storage type.
+ /// Storage type.
kInvalidStorage = -1,
- kBlockDevice = 0xAD,
- kMassStorage = 0xDA,
- kFloppyDisc = 0xCD,
- kOpticalDisc = 0xDC, // CD-ROM/DVD-ROM/Blu-Ray
+ kBlockDevice = 0xAD,
+ kMassStorage = 0xDA,
+ kFloppyDisc = 0xCD,
+ kOpticalDisc = 0xDC, // CD-ROM/DVD-ROM/Blu-Ray
/// Storage flags, combine with below.
- kReadOnly = 0x10, // Read only drive
- kEPMDrive = 0x11, // Explicit Partition Map.
- kEPTDrive = 0x12, // ESP w/ EPM partition.
- kMBRDrive = 0x13, // PC classic partition scheme
- kGPTDrive = 0x14, // PC new partition scheme
+ kReadOnly = 0x10, // Read only drive
+ kEPMDrive = 0x11, // Explicit Partition Map.
+ kEPTDrive = 0x12, // ESP w/ EPM partition.
+ kMBRDrive = 0x13, // PC classic partition scheme
+ kGPTDrive = 0x14, // PC new partition scheme
kStorageCount = 9,
};
@@ -54,12 +55,12 @@ namespace Kernel
/// @brief Packet drive (StorageKit compilant.)
struct DrivePacket final
{
- VoidPtr fPacketContent; //! packet body.
- Char fPacketMime[kDriveNameLen]; //! identify what we're sending.
- SizeT fPacketSize; //! packet size
- UInt32 fPacketCRC32; //! sanity crc, in case if good is set to false
- Boolean fPacketGood;
- Lba fLba;
+ Ref<VoidPtr> fPacketContent; //! packet body.
+ Char fPacketMime[kDriveNameLen]; //! identify what we're sending.
+ SizeT fPacketSize; //! packet size
+ UInt32 fPacketCRC32; //! sanity crc, in case if good is set to false
+ Boolean fPacketGood;
+ Lba fLba;
} fPacket;
Void (*fInput)(DrivePacket* packetPtr);
diff --git a/dev/zka/KernelKit/Heap.hxx b/dev/zka/KernelKit/Heap.hxx
index 9ef3ff85..554ba954 100644
--- a/dev/zka/KernelKit/Heap.hxx
+++ b/dev/zka/KernelKit/Heap.hxx
@@ -51,9 +51,7 @@ namespace Kernel
template <typename T, typename... Args>
inline T* mm_new_class(Args&&... args)
{
- T* cls = (T*)mm_new_heap(sizeof(T), No, No);
- *cls = T(move(args)...);
-
+ T* cls = new T(move(args)...);
return cls;
}
@@ -61,9 +59,7 @@ namespace Kernel
template <typename T>
inline Void mm_delete_class(T* cls)
{
- cls->~T();
- mm_delete_heap((VoidPtr)cls);
-
+ delete cls;
cls = nullptr;
}
} // namespace Kernel
diff --git a/dev/zka/KernelKit/UserProcessScheduler.hxx b/dev/zka/KernelKit/UserProcessScheduler.hxx
index bd07a88e..d383251c 100644
--- a/dev/zka/KernelKit/UserProcessScheduler.hxx
+++ b/dev/zka/KernelKit/UserProcessScheduler.hxx
@@ -14,7 +14,7 @@
#define kSchedMinMicroTime (AffinityKind::kStandard)
#define kSchedInvalidPID (-1)
-#define kSchedProcessLimitPerTeam (32U)
+#define kSchedProcessLimitPerTeam (16U)
#define kSchedMaxMemoryLimit gib_cast(128)
#define kSchedMaxStackSz mib_cast(8)
@@ -106,7 +106,7 @@ namespace Kernel
kProcessSubsystemService,
kProcessSubsystemDriver,
kProcessSubsystemInvalid = 255,
- kProcessSubsystemCount = 4,
+ kProcessSubsystemCount = 4,
};
using ProcessSubsystem = ProcessSubsystemEnum;
@@ -264,8 +264,8 @@ namespace Kernel
friend class UserProcessHelper;
public:
- explicit UserProcessScheduler() = default;
- ~UserProcessScheduler() = default;
+ explicit UserProcessScheduler() = default;
+ ~UserProcessScheduler() override = default;
ZKA_COPY_DEFAULT(UserProcessScheduler)
@@ -283,7 +283,6 @@ namespace Kernel
const Bool IsKernel() override;
const Bool HasMP() override;
-
public:
Ref<UserProcess>& CurrentProcess();
SizeT Run() noexcept;
@@ -306,7 +305,7 @@ namespace Kernel
STATIC bool CanBeScheduled(const UserProcess& process);
STATIC PID& TheCurrentPID();
STATIC SizeT StartScheduling();
- STATIC Bool InitializeScheduler();
+ STATIC Bool InitializeScheduler();
};
const UInt32& sched_get_exit_code(void) noexcept;