diff options
| author | Amlal <amlal@el-mahrouss-logic.com> | 2024-09-12 05:32:09 +0200 |
|---|---|---|
| committer | Amlal <amlal@el-mahrouss-logic.com> | 2024-09-12 05:32:09 +0200 |
| commit | 95f2fc6a9ba93d98a81a817c489de5946dc3f13b (patch) | |
| tree | b97f07c20b41a34550eaa37bc877507e044e356a /dev/ZKA | |
| parent | b323d403149db3d720a63af1087d44718821bd67 (diff) | |
Kernel and Bootloader improvements.
- The Allocator works, we have to find a free memory region for the kernel though.
- Add Init procedure to DriveMgr.
- Refactor CG for cgwm.sys
Signed-off-by: Amlal <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'dev/ZKA')
| -rw-r--r-- | dev/ZKA/FirmwareKit/Handover.hxx | 3 | ||||
| -rw-r--r-- | dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx | 4 | ||||
| -rw-r--r-- | dev/ZKA/HALKit/AMD64/HalKernelMain.cxx | 6 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/DriveMgr.hxx | 1 | ||||
| -rw-r--r-- | dev/ZKA/Modules/CoreCG/WindowRenderer.hxx | 8 | ||||
| -rw-r--r-- | dev/ZKA/Sources/DriveMgr.cxx | 16 | ||||
| -rw-r--r-- | dev/ZKA/Sources/FS/NeFS.cxx | 14 | ||||
| -rw-r--r-- | dev/ZKA/Sources/KernelCheck.cxx | 6 |
8 files changed, 32 insertions, 26 deletions
diff --git a/dev/ZKA/FirmwareKit/Handover.hxx b/dev/ZKA/FirmwareKit/Handover.hxx index 41c038ae..a08ff725 100644 --- a/dev/ZKA/FirmwareKit/Handover.hxx +++ b/dev/ZKA/FirmwareKit/Handover.hxx @@ -23,8 +23,7 @@ #define kHandoverVersion 0x0117 /* Initial bitmap pointer location and size. */ -#define kHandoverBitMapStart (0x100000000) -#define kHandoverBitMapSz (gib_cast(4)) +#define kHandoverBitMapSz (gib_cast(3)) /* Executable base */ #define kHandoverExecBase (0x4000000) diff --git a/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx b/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx index 4549021f..b38fb5ef 100644 --- a/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx +++ b/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx @@ -126,7 +126,9 @@ namespace Kernel ptr_new = traits.FindBitMap(kKernelBitMpStart, size, rw, user); if (!ptr_new) - return nullptr; + { + ke_stop(RUNTIME_CHECK_PAGE); + } if (rw) mm_map_page(ptr_new, eFlagsRw | eFlagsPresent); diff --git a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx index b7dfee8a..ef743c20 100644 --- a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx +++ b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx @@ -86,7 +86,11 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept if (kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled) Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); - Kernel::NeFileSystemMgr::Mount(Kernel::mm_new_class<Kernel::NeFileSystemMgr>()); + Kernel::NeFileSystemMgr* mgr = (Kernel::mm_new_class<Kernel::NeFileSystemMgr>()); + Kernel::NeFileSystemMgr::Mount(mgr); + + delete (NFS_CATALOG_STRUCT*)mgr->CreateDirectory("\\Boot\\"); + delete (NFS_CATALOG_STRUCT*)mgr->CreateDirectory("\\Support\\"); mp_do_user_switch(); diff --git a/dev/ZKA/KernelKit/DriveMgr.hxx b/dev/ZKA/KernelKit/DriveMgr.hxx index 55c4912d..e2e0bc3a 100644 --- a/dev/ZKA/KernelKit/DriveMgr.hxx +++ b/dev/ZKA/KernelKit/DriveMgr.hxx @@ -63,6 +63,7 @@ namespace Kernel Void (*fInput)(DrivePacket* packetPtr); Void (*fOutput)(DrivePacket* packetPtr); Void (*fVerify)(DrivePacket* packetPtr); + Void (*fInit)(DrivePacket* packetPtr); const Char* (*fDriveKind)(Void); }; diff --git a/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx b/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx index ebd47ac9..153cb64f 100644 --- a/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx +++ b/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx @@ -47,7 +47,7 @@ namespace CG Size w_child_count{0}; struct UI_WINDOW_STRUCT* w_child_elements[cChildElementCount]{0}; struct UI_WINDOW_STRUCT* w_parent{nullptr}; - UInt32* display_ptr{nullptr}; + UInt32* w_display_ptr{nullptr}; Bool w_needs_repaint{false}; }; @@ -92,8 +92,8 @@ namespace CG wnd->w_w = width; wnd->w_h = height; - wnd->display_ptr = new UInt32[width * height]; - rt_set_memory(wnd->display_ptr, CGColor(0xF5, 0xF5, 0xF5), width * height); + wnd->w_display_ptr = new UInt32[width * height]; + rt_set_memory(wnd->w_display_ptr, CGColor(0xF5, 0xF5, 0xF5), width * height); return wnd; } @@ -182,7 +182,7 @@ namespace CG // Draw fake controls, just for the looks of it (WINDOW ONLY) if (wnd[index]->w_type == cWndFlagWindow) { - CGDrawBitMapInRegion(wnd[index]->display_ptr, wnd[index]->w_h, wnd[index]->w_w, wnd[index]->w_y, wnd[index]->w_x); + CGDrawBitMapInRegion(wnd[index]->w_display_ptr, wnd[index]->w_h, wnd[index]->w_w, wnd[index]->w_y, wnd[index]->w_x); CGDrawInRegion(CGColor(0xFF, 0xFF, 0xFF), wnd[index]->w_w, FLATCONTROLS_HEIGHT, wnd[index]->w_y, wnd[index]->w_x); if (wnd[index]->w_sub_type != cWndFlagHideCloseControl) diff --git a/dev/ZKA/Sources/DriveMgr.cxx b/dev/ZKA/Sources/DriveMgr.cxx index 5d0f7fc3..82291ada 100644 --- a/dev/ZKA/Sources/DriveMgr.cxx +++ b/dev/ZKA/Sources/DriveMgr.cxx @@ -58,7 +58,7 @@ namespace Kernel /// @brief Executes a disk check on the ATA drive. /// @param pckt /// @return - Void ke_drv_check_disk(DriveTrait::DrivePacket* pckt) + Void ke_drv_init(DriveTrait::DrivePacket* pckt) { if (!pckt) { @@ -84,21 +84,21 @@ namespace Kernel /// @param /// @return #ifdef __ATA_PIO__ - const Char* io_drive_kind(Void) + const Char* ke_drv_kind(Void) { return "ATA-PIO"; } #endif #ifdef __ATA_DMA__ - const Char* io_drive_kind(Void) + const Char* ke_drv_kind(Void) { return "ATA-DMA"; } #endif #ifdef __AHCI__ - const Char* io_drive_kind(Void) + const Char* ke_drv_kind(Void) { return "AHCI"; } @@ -124,7 +124,8 @@ namespace Kernel trait.fInput = io_drv_unimplemented; trait.fOutput = io_drv_unimplemented; trait.fVerify = io_drv_unimplemented; - trait.fDriveKind = io_drive_kind; + trait.fInit = io_drv_unimplemented; + trait.fDriveKind = ke_drv_kind; return trait; } @@ -140,8 +141,9 @@ namespace Kernel trait.fInput = ke_drv_input; trait.fOutput = ke_drv_output; - trait.fVerify = ke_drv_check_disk; - trait.fDriveKind = io_drive_kind; + trait.fVerify = io_drv_unimplemented; + trait.fInit = ke_drv_init; + trait.fDriveKind = ke_drv_kind; kcout << "Construct drive with success.\r"; diff --git a/dev/ZKA/Sources/FS/NeFS.cxx b/dev/ZKA/Sources/FS/NeFS.cxx index 9c33b78c..8bd467c6 100644 --- a/dev/ZKA/Sources/FS/NeFS.cxx +++ b/dev/ZKA/Sources/FS/NeFS.cxx @@ -790,9 +790,13 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::FindCatalog(_Input const Char* catalogNa { delete parentCatalog; } + else + { + return nullptr; + } } - kcout << "fetching catalog...\r"; + kcout << "Fetching catalog...\r"; NeFSSearchThroughCatalogList: while (drive.fPacket.fPacketGood) @@ -980,7 +984,7 @@ VoidPtr NeFSParser::ReadCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, if (dataForkLba < kNeFSCatalogStartAddress) { - delete[] fs_buf; + delete fs_buf; return nullptr; } @@ -1038,11 +1042,11 @@ namespace Kernel::Detail sMountpointInterface.C() = io_construct_drive(); sMountpointInterface.D() = io_construct_drive(); - kcout << "Testing A:\r"; + kcout << "Constructing A:\r"; - sMountpointInterface.A().fVerify(&sMountpointInterface.A().fPacket); + sMountpointInterface.A().fInit(&sMountpointInterface.A().fPacket); - kcout << "Testing A: [ OK ]\r"; + kcout << "Constructing A: [ OK ]\r"; return true; } diff --git a/dev/ZKA/Sources/KernelCheck.cxx b/dev/ZKA/Sources/KernelCheck.cxx index 833ac6de..4c316c0b 100644 --- a/dev/ZKA/Sources/KernelCheck.cxx +++ b/dev/ZKA/Sources/KernelCheck.cxx @@ -138,12 +138,6 @@ namespace Kernel Void RecoveryFactory::Recover() noexcept { - if (NeFileSystemMgr::GetMounted()) - { - NeFileSystemMgr::GetMounted()->CreateSwapFile("\\Boot\\$DUMP"); - NeFileSystemMgr::GetMounted()->CreateSwapFile("\\Support\\$CHKDSK"); - } - PowerFactoryInterface power(nullptr); power.Reboot(); } |
