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 | |
| 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>
31 files changed, 135 insertions, 122 deletions
diff --git a/dev/crt/defines.hxx b/dev/crt/defines.hxx index 8bcceaae..f23bdaa3 100644 --- a/dev/crt/defines.hxx +++ b/dev/crt/defines.hxx @@ -15,9 +15,9 @@ typedef void* ptr_type; typedef __SIZE_TYPE__ size_type; -typedef void* voidptr_t; -typedef void* any_t; -typedef char* caddr_t; +typedef void* voidptr_t; +typedef void* any_t; +typedef char* caddr_t; #ifndef NULL #define NULL ((voidptr_t)0) diff --git a/dev/crt/src/hal/x86/base_alloc.cxx b/dev/crt/src/hal/x86/base_alloc.cxx index c9634dbd..55a53c9d 100644 --- a/dev/crt/src/hal/x86/base_alloc.cxx +++ b/dev/crt/src/hal/x86/base_alloc.cxx @@ -20,7 +20,7 @@ void* operator new(size_t length) : "=r"(ptr)); if (!ptr) - std::__throw_bad_alloc(); + std::__throw_bad_alloc(); return ptr; } @@ -35,7 +35,7 @@ void* operator new[](size_t length) : "=r"(ptr)); if (!ptr) - std::__throw_bad_alloc(); + std::__throw_bad_alloc(); return ptr; } diff --git a/dev/hpfs/hpfs_specs.hxx b/dev/hpfs/hpfs_specs.hxx index 851623a4..5b22ce31 100644 --- a/dev/hpfs/hpfs_specs.hxx +++ b/dev/hpfs/hpfs_specs.hxx @@ -11,8 +11,8 @@ #include <ddk/ddk.h> -#define kHPFSVersion 0x01000 -#define kHPFSMagic " HPFS" +#define kHPFSVersion 0x01000 +#define kHPFSMagic " HPFS" #define kHPFSMagicLen 8 /** @brief Drive type enum. */ diff --git a/dev/modules/FB/FB.hxx b/dev/modules/FB/FB.hxx index 1b30fb8e..0f3dbfd6 100644 --- a/dev/modules/FB/FB.hxx +++ b/dev/modules/FB/FB.hxx @@ -18,7 +18,7 @@ /// @brief Performs OR drawing on the framebuffer. #define CGDrawBitMapInRegionA(_BitMp, _Height, _Width, _BaseX, _BaseY) \ - kCGCursor = 0; \ + kCGCursor = 0; \ \ for (Kernel::SizeT i = _BaseX; i < (_Height + _BaseX); ++i) \ { \ @@ -27,15 +27,15 @@ *(((Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \ i + \ - 4 * u))) |= (_BitMp)[kCGCursor]; \ + 4 * u))) |= (_BitMp)[kCGCursor]; \ \ - ++kCGCursor; \ + ++kCGCursor; \ } \ } /// @brief Draws a resource. #define CGDrawBitMapInRegion(_BitMp, _Height, _Width, _BaseX, _BaseY) \ - kCGCursor = 0; \ + kCGCursor = 0; \ \ for (Kernel::SizeT i = _BaseX; i < (_Height + _BaseX); ++i) \ { \ @@ -44,14 +44,14 @@ *(((Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \ i + \ - 4 * u))) = (_BitMp)[kCGCursor]; \ + 4 * u))) = (_BitMp)[kCGCursor]; \ \ - ++kCGCursor; \ + ++kCGCursor; \ } \ } #define CGDrawBitMapInRegionToRgn(_Rgn, _BitMp, _Height, _Width, _BaseX, _BaseY) \ - kCGCursor = 0; \ + kCGCursor = 0; \ \ for (Kernel::SizeT i = _BaseX; i < (_Height + _BaseX); ++i) \ { \ @@ -60,9 +60,9 @@ *(((Kernel::UInt32*)(_Rgn + \ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \ i + \ - 4 * u))) = (_BitMp)[kCGCursor]; \ + 4 * u))) = (_BitMp)[kCGCursor]; \ \ - ++kCGCursor; \ + ++kCGCursor; \ } \ } @@ -96,7 +96,7 @@ /// @brief Draws inside a zone. #define CGDrawInRegionToRgn(_Rgn, _Clr, _Height, _Width, _BaseX, _BaseY) \ - kCGCursor = 0; \ + kCGCursor = 0; \ \ for (Kernel::SizeT x_base = _BaseX; x_base < (_Width + _BaseX); ++x_base) \ { \ @@ -105,13 +105,13 @@ *(((volatile Kernel::UInt32*)(_Rgn + \ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \ x_base + \ - 4 * y_base))) = _Clr[kCGCursor]; \ - ++kCGCursor; \ + 4 * y_base))) = _Clr[kCGCursor]; \ + ++kCGCursor; \ } \ } #define CGDrawInRegionToVideoRgn(_VideoRgn, _Clr, _Height, _Width, _BaseX, _BaseY) \ - kCGCursor = 0; \ + kCGCursor = 0; \ \ for (Kernel::SizeT x_base = _BaseX; x_base < (_Width + _BaseX); ++x_base) \ { \ @@ -121,12 +121,12 @@ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \ x_base + \ 4 * y_base))) = _Clr; \ - ++kCGCursor; \ + ++kCGCursor; \ } \ } #define CGDrawInRegionToVideoRgnA(_VideoRgn, _Clr, _Height, _Width, _BaseX, _BaseY) \ - kCGCursor = 0; \ + kCGCursor = 0; \ \ for (Kernel::SizeT x_base = _BaseX; x_base < (_Width + _BaseX); ++x_base) \ { \ @@ -136,7 +136,7 @@ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \ x_base + \ 4 * y_base))) |= _Clr; \ - ++kCGCursor; \ + ++kCGCursor; \ } \ } diff --git a/dev/zba/src/BootSupport.cxx b/dev/zba/src/BootSupport.cxx index f0fb3def..bda7ee38 100644 --- a/dev/zba/src/BootSupport.cxx +++ b/dev/zba/src/BootSupport.cxx @@ -75,6 +75,8 @@ EXTERN_C int strcmp(const char* whatToCheck, const char* whatToCheckRight) } /// @brief something specific to the Microsoft's ABI, When the stack grows too big. -EXTERN_C void ___chkstk_ms(void) {} +EXTERN_C void ___chkstk_ms(void) +{ +} #endif diff --git a/dev/zba/src/HEL/AMD64/BootMain.cxx b/dev/zba/src/HEL/AMD64/BootMain.cxx index 5335ca7a..113f2d40 100644 --- a/dev/zba/src/HEL/AMD64/BootMain.cxx +++ b/dev/zba/src/HEL/AMD64/BootMain.cxx @@ -32,7 +32,7 @@ /** Graphics related. */ -STATIC EfiGraphicsOutputProtocol* kGop = nullptr; +STATIC EfiGraphicsOutputProtocol* kGop = nullptr; STATIC UInt16 kGopStride = 0U; STATIC EfiGUID kGopGuid; @@ -78,8 +78,8 @@ EXTERN EfiBootServices* BS; /// @param ImageHandle Handle of this image. /// @param SystemTable The system table of it. /// @return nothing, never returns. -EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr ImageHandle, - EfiSystemTable* SystemTable) +EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr ImageHandle, + EfiSystemTable* SystemTable) { InitEFI(SystemTable); ///! Init the EFI library. @@ -149,7 +149,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr ImageHandle, mp->GetNumberOfProcessors(mp, &cnt_disabled, &cnt_enabled); #ifdef __ZKA_USE_FB__ - CGDrawString("NEWOSLDR (C) ZKA TECHNOLOGIES.", 10, 10, RGB(0xFF, 0xFF, 0xFF)); + CGDrawString("NEWOSLDR (C) ZKA WEB SERVICES.", 10, 10, RGB(0xFF, 0xFF, 0xFF)); CGDrawString((cnt_enabled > 1) ? "MULTIPLE PROCESSORS DETECTED." : "SINGLE PROCESSOR DETECTED.", 20, 10, RGB(0xFF, 0xFF, 0xFF)); #endif // __ZKA_USE_FB__ diff --git a/dev/zba/src/HEL/ARM64/BootMain.cxx b/dev/zba/src/HEL/ARM64/BootMain.cxx index 299b5adb..2dc940cd 100644 --- a/dev/zba/src/HEL/ARM64/BootMain.cxx +++ b/dev/zba/src/HEL/ARM64/BootMain.cxx @@ -19,7 +19,7 @@ EXTERN EfiBootServices* BS; -STATIC EfiGraphicsOutputProtocol* kGop = nullptr; +STATIC EfiGraphicsOutputProtocol* kGop = nullptr; STATIC UInt16 kGopStride = 0U; STATIC EfiGUID kGopGuid; diff --git a/dev/zba/src/HEL/ARM64/BootPlatform.cxx b/dev/zba/src/HEL/ARM64/BootPlatform.cxx index 2fb58647..b8c96a10 100644 --- a/dev/zba/src/HEL/ARM64/BootPlatform.cxx +++ b/dev/zba/src/HEL/ARM64/BootPlatform.cxx @@ -14,27 +14,24 @@ using namespace Boot; EXTERN_C void rt_hlt() { - while (Yes); + while (Yes) + ; } EXTERN_C void rt_cli() { - } EXTERN_C void rt_sti() { - } EXTERN_C void rt_cld() { - } EXTERN_C void rt_std() { - } #endif // __STANDALONE__ diff --git a/dev/zba/src/Thread.cxx b/dev/zba/src/Thread.cxx index a8b3e87c..46b9030b 100644 --- a/dev/zba/src/Thread.cxx +++ b/dev/zba/src/Thread.cxx @@ -39,11 +39,11 @@ namespace Boot if (blob_bytes[0] == kMagMz0 && blob_bytes[1] == kMagMz1) { - LDR_EXEC_HEADER_PTR header_ptr = ldr_find_exec_header(blob_bytes); + LDR_EXEC_HEADER_PTR header_ptr = ldr_find_exec_header(blob_bytes); LDR_OPTIONAL_HEADER_PTR opt_header_ptr = ldr_find_opt_exec_header(blob_bytes); if (!header_ptr || !opt_header_ptr) - return; + return; #ifdef __ZKA_AMD64__ if (header_ptr->mMachine != kPeMachineAMD64 || diff --git a/dev/zka/FSKit/HPFS.hxx b/dev/zka/FSKit/HPFS.hxx index 6ff49f1f..c709e48f 100644 --- a/dev/zka/FSKit/HPFS.hxx +++ b/dev/zka/FSKit/HPFS.hxx @@ -11,8 +11,8 @@ /// @file HPFS.hxx
/// @brief HPFS filesystem support.
-#define kHPFSVersion 0x01000
-#define kHPFSMagic " HPFS"
+#define kHPFSVersion 0x01000
+#define kHPFSMagic " HPFS"
#define kHPFSMagicLen 8
#define kHPFSMinimumDiskSize (gib_cast(64))
diff --git a/dev/zka/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx b/dev/zka/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx index 292aea4d..a76fde89 100644 --- a/dev/zka/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx +++ b/dev/zka/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx @@ -92,7 +92,7 @@ EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp) /// @return nothing. EXTERN_C Kernel::Void hal_system_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr rdx) { - Kernel::HAL::Out8(0x20, 0x20); // Acknowledge interrupt to master PIC + Kernel::HAL::Out8(0x20, 0x20); // Acknowledge interrupt to master PIC if (rcx <= (kSyscalls.Count() - 1)) { @@ -110,7 +110,7 @@ EXTERN_C Kernel::Void hal_system_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr /// @return nothing. EXTERN_C Kernel::Void hal_kernel_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr rdx, Kernel::UIntPtr r8, Kernel::UIntPtr r9) { - Kernel::HAL::Out8(0x20, 0x20); // Acknowledge interrupt to master PIC + Kernel::HAL::Out8(0x20, 0x20); // Acknowledge interrupt to master PIC if (rcx <= (kSyscalls.Count() - 1)) { diff --git a/dev/zka/HALKit/AMD64/HalDescriptorLoader.cxx b/dev/zka/HALKit/AMD64/HalDescriptorLoader.cxx index d554771c..343ac9ab 100644 --- a/dev/zka/HALKit/AMD64/HalDescriptorLoader.cxx +++ b/dev/zka/HALKit/AMD64/HalDescriptorLoader.cxx @@ -100,10 +100,9 @@ namespace Kernel::HAL hal_load_idt(idt); Detail::hal_enable_pit(cPITTickForScheduler); - Detail::hal_clear_irq_mask(32); - - rt_sti(); - } + + rt_sti(); + } void GDTLoader::Load(Ref<RegisterGDT>& gdt) { diff --git a/dev/zka/HALKit/AMD64/HalKernelMain.cxx b/dev/zka/HALKit/AMD64/HalKernelMain.cxx index ea8049c5..e836a239 100644 --- a/dev/zka/HALKit/AMD64/HalKernelMain.cxx +++ b/dev/zka/HALKit/AMD64/HalKernelMain.cxx @@ -83,19 +83,25 @@ EXTERN_C void hal_init_platform( EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept { - Kernel::HAL::Register64 idt_reg; - idt_reg.Base = (Kernel::UIntPtr)kInterruptVectorTable; - - Kernel::HAL::IDTLoader idt_loader; - idt_loader.Load(idt_reg); + /* Initialize filesystem. */ + Kernel::NeFileSystemMgr* mgr = Kernel::mm_new_class<Kernel::NeFileSystemMgr>(); + Kernel::NeFileSystemMgr::Mount(mgr); + + /* Initialize scheduler. */ + Kernel::UserProcessHelper::InitializeScheduler(); + /* Start any cores. */ if (kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled) Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); + + /* Load System.exe here (TODO) */ + + Kernel::HAL::Register64 idt_reg; + idt_reg.Base = (Kernel::UIntPtr)kInterruptVectorTable; - Kernel::NeFileSystemMgr* mgr = Kernel::mm_new_class<Kernel::NeFileSystemMgr>(); - Kernel::NeFileSystemMgr::Mount(mgr); - - Kernel::UserProcessHelper::InitializeScheduler(); + /* Load interrupts. */ + Kernel::HAL::IDTLoader idt_loader; + idt_loader.Load(idt_reg); Kernel::ke_stop(RUNTIME_CHECK_BOOTSTRAP); } diff --git a/dev/zka/HALKit/AMD64/Processor.hxx b/dev/zka/HALKit/AMD64/Processor.hxx index f1de4d49..2fd62820 100644 --- a/dev/zka/HALKit/AMD64/Processor.hxx +++ b/dev/zka/HALKit/AMD64/Processor.hxx @@ -23,10 +23,10 @@ #define kPITChannel0Port 0x40 #define kPITFrequency 1193180 -#define kPICCommand 0x20 -#define kPICData 0x21 +#define kPICCommand 0x20 +#define kPICData 0x21 #define kPIC2Command 0xA0 -#define kPIC2Data 0xA1 +#define kPIC2Data 0xA1 EXTERN_C { diff --git a/dev/zka/HALKit/ARM64/HalKernelMain.cxx b/dev/zka/HALKit/ARM64/HalKernelMain.cxx index 4e445a21..52096158 100644 --- a/dev/zka/HALKit/ARM64/HalKernelMain.cxx +++ b/dev/zka/HALKit/ARM64/HalKernelMain.cxx @@ -40,5 +40,7 @@ EXTERN_C void hal_init_platform( /* INITIALIZE BIT MAP. */ /************************************** */ - while (Yes) {} + while (Yes) + { + } } diff --git a/dev/zka/HALKit/ARM64/HalPagingMgr.cxx b/dev/zka/HALKit/ARM64/HalPagingMgr.cxx index e8a41ff5..ae060af9 100644 --- a/dev/zka/HALKit/ARM64/HalPagingMgr.cxx +++ b/dev/zka/HALKit/ARM64/HalPagingMgr.cxx @@ -36,7 +36,6 @@ namespace Kernel::HAL /// \brief Retrieve the page status of a PTE. STATIC Void mmi_page_status(PTE* pte) { - } STATIC Int32 mmi_map_page_table_entry(VoidPtr virtual_address, UInt32 flags, PTE* pt_entry); diff --git a/dev/zka/HALKit/ARM64/HalSchedulerCore.cxx b/dev/zka/HALKit/ARM64/HalSchedulerCore.cxx index 6f2f356e..e231e0fc 100644 --- a/dev/zka/HALKit/ARM64/HalSchedulerCore.cxx +++ b/dev/zka/HALKit/ARM64/HalSchedulerCore.cxx @@ -8,9 +8,9 @@ namespace Kernel { - EXTERN_C Void __zka_pure_call(void) + EXTERN_C Void __zka_pure_call(void) { - UserProcessScheduler::The().CurrentProcess().Leak().Crash(); + UserProcessScheduler::The().CurrentProcess().Leak().Crash(); } Void UserProcess::SetImageStart(VoidPtr image_start) noexcept diff --git a/dev/zka/HALKit/ARM64/Processor.hxx b/dev/zka/HALKit/ARM64/Processor.hxx index 883ebe5c..93a9141a 100644 --- a/dev/zka/HALKit/ARM64/Processor.hxx +++ b/dev/zka/HALKit/ARM64/Processor.hxx @@ -62,7 +62,6 @@ namespace Kernel::HAL { while (Yes) { - } } 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; diff --git a/dev/zka/NewKit/Ref.hxx b/dev/zka/NewKit/Ref.hxx index 981e18c1..cf672886 100644 --- a/dev/zka/NewKit/Ref.hxx +++ b/dev/zka/NewKit/Ref.hxx @@ -70,7 +70,7 @@ namespace Kernel } private: - T* fClass{nullptr}; + T* fClass{nullptr}; }; template <typename T> diff --git a/dev/zka/src/CxxAbi-AMD64.cxx b/dev/zka/src/CxxAbi-AMD64.cxx index 87801eb8..32e3ff37 100644 --- a/dev/zka/src/CxxAbi-AMD64.cxx +++ b/dev/zka/src/CxxAbi-AMD64.cxx @@ -25,8 +25,6 @@ EXTERN_C Kernel::Void __cxa_pure_virtual(void* self) EXTERN_C void ___chkstk_ms(void) { - kcout << "Stack pointer has grown too much.\r"; - Kernel::ke_stop(RUNTIME_CHECK_FAILED); } EXTERN_C int atexit(void (*f)(void*), void* arg, void* dso) diff --git a/dev/zka/src/CxxAbi-ARM64.cxx b/dev/zka/src/CxxAbi-ARM64.cxx index 34c3f09c..759c2a7f 100644 --- a/dev/zka/src/CxxAbi-ARM64.cxx +++ b/dev/zka/src/CxxAbi-ARM64.cxx @@ -17,7 +17,9 @@ uarch_t __atexit_func_count; /// @brief Dynamic Shared Object Handle. Kernel::UIntPtr __dso_handle; -EXTERN_C void __chkstk(void) {} +EXTERN_C void __chkstk(void) +{ +} EXTERN_C int atexit(void (*f)(void*), void* arg, void* dso) { diff --git a/dev/zka/src/DriveMgr.cxx b/dev/zka/src/DriveMgr.cxx index eabe8978..ecec5cec 100644 --- a/dev/zka/src/DriveMgr.cxx +++ b/dev/zka/src/DriveMgr.cxx @@ -23,7 +23,7 @@ namespace Kernel STATIC UInt8 kATAMaster = 0U; /// @brief reads from an ATA drive. - /// @param pckt + /// @param pckt Packet structure (fPacketContent must be non null) /// @return Void io_drv_input(DriveTrait::DrivePacket* pckt) { @@ -33,9 +33,9 @@ namespace Kernel } #ifdef __AHCI__ - drv_std_read(pckt->fLba, (Char*)pckt->fPacketContent, kAHCISectorSize, pckt->fPacketSize); + drv_std_read(pckt->fLba, (Char*)pckt->fPacketContent.Leak(), kAHCISectorSize, pckt->fPacketSize); #elif defined(__ATA_PIO__) || defined(__ATA_DMA__) - drv_std_read(pckt->fLba, kATAIO, kATAMaster, (Char*)pckt->fPacketContent, kATASectorSize, pckt->fPacketSize); + drv_std_read(pckt->fLba, kATAIO, kATAMaster, (Char*)pckt->fPacketContent.Leak(), kATASectorSize, pckt->fPacketSize); #endif } @@ -50,9 +50,9 @@ namespace Kernel } #ifdef __AHCI__ - drv_std_write(pckt->fLba, (Char*)pckt->fPacketContent, kAHCISectorSize, pckt->fPacketSize); + drv_std_write(pckt->fLba, (Char*)pckt->fPacketContent.Leak(), kAHCISectorSize, pckt->fPacketSize); #elif defined(__ATA_PIO__) || defined(__ATA_DMA__) - drv_std_write(pckt->fLba, kATAIO, kATAMaster, (Char*)pckt->fPacketContent, kATASectorSize, pckt->fPacketSize); + drv_std_write(pckt->fLba, kATAIO, kATAMaster, (Char*)pckt->fPacketContent.Leak(), kATASectorSize, pckt->fPacketSize); #endif } diff --git a/dev/zka/src/FS/NeFS.cxx b/dev/zka/src/FS/NeFS.cxx index f1b60c70..48bd441f 100644 --- a/dev/zka/src/FS/NeFS.cxx +++ b/dev/zka/src/FS/NeFS.cxx @@ -327,7 +327,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::CreateCatalog(_Input const Char* name, constexpr auto cNeFSCatalogPadding = 4; NFS_ROOT_PARTITION_BLOCK* part_block = (NFS_ROOT_PARTITION_BLOCK*)sectorBufPartBlock; - out_lba = part_block->StartCatalog; + out_lba = part_block->StartCatalog; } constexpr SizeT cDefaultForkSize = kNeFSForkSize; @@ -337,12 +337,12 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::CreateCatalog(_Input const Char* name, Int32 flagsList = flags; child_catalog->ResourceForkSize = cDefaultForkSize; - child_catalog->DataForkSize = cDefaultForkSize; + child_catalog->DataForkSize = cDefaultForkSize; child_catalog->NextSibling = out_lba; child_catalog->PrevSibling = out_lba; - child_catalog->Kind = kind; - child_catalog->Flags = kNeFSFlagCreated | flagsList; + child_catalog->Kind = kind; + child_catalog->Flags = kNeFSFlagCreated | flagsList; rt_copy_memory((VoidPtr)name, (VoidPtr)child_catalog->Name, rt_string_len(name)); @@ -404,7 +404,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::CreateCatalog(_Input const Char* name, return nullptr; } - child_catalog->DataFork = part_block->DiskSize - start_free; + child_catalog->DataFork = part_block->DiskSize - start_free; child_catalog->ResourceFork = child_catalog->DataFork; // Write the new catalog next sibling, if we don't know this parent. // @@ -587,13 +587,13 @@ bool NeFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLb SizeT sectorCount = drv_get_sector_count(); SizeT diskSize = drv_get_size(); - part_block->Kind = kNeFSPartitionTypeStandard; + part_block->Kind = kNeFSPartitionTypeStandard; part_block->StartCatalog = kNeFSCatalogStartAddress; - part_block->Flags = kNeFSPartitionTypeStandard; + part_block->Flags = kNeFSPartitionTypeStandard; part_block->CatalogCount = sectorCount / sizeof(NFS_CATALOG_STRUCT); - part_block->SectorCount = sectorCount; - part_block->DiskSize = diskSize; - part_block->FreeCatalog = sectorCount / sizeof(NFS_CATALOG_STRUCT); + part_block->SectorCount = sectorCount; + part_block->DiskSize = diskSize; + part_block->FreeCatalog = sectorCount / sizeof(NFS_CATALOG_STRUCT); drive->fPacket.fPacketContent = fs_buf; drive->fPacket.fPacketSize = kNeFSSectorSz; diff --git a/dev/zka/src/Stop.cxx b/dev/zka/src/Stop.cxx index 1992fc38..afbc223b 100644 --- a/dev/zka/src/Stop.cxx +++ b/dev/zka/src/Stop.cxx @@ -15,7 +15,7 @@ #include <modules/FB/FB.hxx> #include <modules/FB/Text.hxx> -#define cWebsiteMacro "https://help.zka-technologies.com/" +#define cWebsiteMacro "https://help.zws.com/" /* Each error code is attributed with an ID, which will prompt a string onto the * screen. Wait for debugger... */ diff --git a/dev/zka/src/Storage/SCSIDeviceInterface.cxx b/dev/zka/src/Storage/SCSIDeviceInterface.cxx index c228ae54..bda16961 100644 --- a/dev/zka/src/Storage/SCSIDeviceInterface.cxx +++ b/dev/zka/src/Storage/SCSIDeviceInterface.cxx @@ -8,4 +8,4 @@ ///! @brief ATAPI SCSI packet. const scsi_packet_type<12> kCDRomPacketTemplate = {0x43, 0, 1, 0, 0, 0, - 0, 12, 0x40, 0, 0}; + 0, 12, 0x40, 0, 0}; diff --git a/dev/zka/src/UserProcessScheduler.cxx b/dev/zka/src/UserProcessScheduler.cxx index d0236578..af9ab5d3 100644 --- a/dev/zka/src/UserProcessScheduler.cxx +++ b/dev/zka/src/UserProcessScheduler.cxx @@ -35,10 +35,12 @@ namespace Kernel STATIC UInt32 cLastExitCode = 0U; /***********************************************************************************/ - /// @brief User Process scheduler global object. + /// @brief User Process scheduler global and external reference of thread scheduler. /***********************************************************************************/ UserProcessScheduler* cProcessScheduler = nullptr; + EXTERN HardwareThreadScheduler* cHardwareThreadScheduler; + /// @brief Gets the last exit code. /// @note Not thread-safe. @@ -54,8 +56,15 @@ namespace Kernel Void UserProcess::Crash() { - if (*this->Name != 0) - kcout << this->Name << ": crashed, error id: " << number(kErrorProcessFault) << endl; + if (*this->Name != 0 && + *this->Name > 'A') +{ + kcout << this->Name << ": crashed, error id: " << number(kErrorProcessFault) << endl; +} + else + { + return; + } this->Exit(kErrorProcessFault); } @@ -505,11 +514,15 @@ namespace Kernel { if (!cProcessScheduler) { - cProcessScheduler = mm_new_class<UserProcessScheduler>(); - return Yes; + cProcessScheduler = new UserProcessScheduler(); } + + if (!cHardwareThreadScheduler) + { + cHardwareThreadScheduler = new HardwareThreadScheduler(); + } - return No; + return Yes; } /***********************************************************************************/ @@ -520,12 +533,12 @@ namespace Kernel SizeT UserProcessHelper::StartScheduling() { - kcout << "Sched: Trying to schedule processes...\r"; + kcout << "UserProcessScheduler: Trying to schedule user processes...\r"; if (!cProcessScheduler) return 0; - kcout << "Sched: Scheduling processes...\r"; + kcout << "UserProcessScheduler: Object is valid, scheduling user processes...\r"; SizeT ret = cProcessScheduler->Run(); return ret; diff --git a/tools/framework.hxx b/tools/framework.hxx index e82c67d3..416aa8b0 100644 --- a/tools/framework.hxx +++ b/tools/framework.hxx @@ -7,7 +7,7 @@ #include <common_zka.hxx> -#define kFKDLLDirectory "ZKA/DLL/" +#define kFKDLLDirectory "ZKA/DLL/" #define kFKManifestDirectory "ZKA/Manifests/" -#define kFKRootDirectory "ZKA/" -#define kFKExtension ".framework" +#define kFKRootDirectory "ZKA/" +#define kFKExtension ".framework" diff --git a/tools/src/make_framework.cxx b/tools/src/make_framework.cxx index a6efb312..2886b142 100644 --- a/tools/src/make_framework.cxx +++ b/tools/src/make_framework.cxx @@ -25,7 +25,7 @@ int main(int argc, char* argv[]) auto path = std::string(argv[1]); if (!path.ends_with(kFKExtension)) - return 1; + return 1; std::filesystem::path path_arg = path; |
