diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-10-20 17:53:37 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-10-20 17:53:37 +0200 |
| commit | 7764e88cd0032cd57fdc17a2906db9d8af9999e1 (patch) | |
| tree | a373ed0682c3161ee38b77089bc8fab821304a6b /dev/zka/KernelKit | |
| parent | 22e85ecdb17888268d32997b20e01cc98968cc3d (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.hxx | 33 | ||||
| -rw-r--r-- | dev/zka/KernelKit/Heap.hxx | 8 | ||||
| -rw-r--r-- | dev/zka/KernelKit/UserProcessScheduler.hxx | 11 |
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; |
