diff options
39 files changed, 178 insertions, 238 deletions
diff --git a/dev/INSTALL/Install.asm b/dev/INSTALL/Install.asm new file mode 100644 index 00000000..3845316c --- /dev/null +++ b/dev/INSTALL/Install.asm @@ -0,0 +1,10 @@ +;; /* +;; * --------------------------------------------------- +;; * +;; * Copyright ZKA Technologies., all rights reserved. +;; * +;; * File: Install.asm +;; * Purpose: ZKA installer program, runs at ring-0. +;; * +;; * --------------------------------------------------- +;; */ diff --git a/dev/ZBA/Sources/HEL/AMD64/BootFileReader.cxx b/dev/ZBA/Sources/HEL/AMD64/BootFileReader.cxx index c8e0bb4e..c2dff978 100644 --- a/dev/ZBA/Sources/HEL/AMD64/BootFileReader.cxx +++ b/dev/ZBA/Sources/HEL/AMD64/BootFileReader.cxx @@ -13,6 +13,7 @@ #include <BootKit/BootKit.hxx> #include <FirmwareKit/Handover.hxx> #include <FirmwareKit/EFI/API.hxx> +#include <Modules/CoreCG/TextRenderer.hxx> /// @file BootFileReader /// @brief Bootloader File reader. @@ -85,6 +86,8 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, .Write(L"\r"); this->mErrorCode = kNotSupported; + CGDrawString("NEWOSLDR: PLEASE RECOVER YOUR NEWOSKRNL INSTALL.", 40, 10, RGB(0xFF, 0xFF, 0xFF)); + mRootFs->Close(mRootFs); return; diff --git a/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx b/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx index cd131a2d..67b2a478 100644 --- a/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx +++ b/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx @@ -265,6 +265,10 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, loader = new Boot::BThread(readerKernel.Blob()); loader->SetName("64-bit Kernel DLL."); } + else + { + CGDrawString("NEWOSLDR: PLEASE RECOVER YOUR NEWOSKRNL INSTALL.", 40, 10, RGB(0xFF, 0xFF, 0xFF)); + } EFI::ExitBootServices(MapKey, ImageHandle); diff --git a/dev/ZKA/ArchKit/ArchKit.hxx b/dev/ZKA/ArchKit/ArchKit.hxx index 97a4c17a..60a2b2ec 100644 --- a/dev/ZKA/ArchKit/ArchKit.hxx +++ b/dev/ZKA/ArchKit/ArchKit.hxx @@ -107,5 +107,6 @@ inline Kernel::Array<HAL_SYSCALL_RECORD, kKerncalls; EXTERN_C Kernel::HAL::StackFramePtr mp_get_current_context(); +EXTERN_C Kernel::Void mp_do_context_switch_pre(Kernel::Void); /// @note The context gives out the return address in return register. EXTERN_C Kernel::UIntPtr mp_do_context_switch(Kernel::VoidPtr image, Kernel::UInt8* stack_ptr, Kernel::HAL::StackFramePtr stackPtr); diff --git a/dev/ZKA/Docs/TODO-LIST.md b/dev/ZKA/Docs/TODO-LIST.md index d0be1adc..ec50c89d 100644 --- a/dev/ZKA/Docs/TODO-LIST.md +++ b/dev/ZKA/Docs/TODO-LIST.md @@ -20,6 +20,6 @@ Status: newosldr: Need to boot from EPM partition. [ X ] <br> -NewKernel: New Filesystem is done. [ X ] +newoskrnl: New Filesystem is done. [ X ] **Refer to Jira please!** diff --git a/dev/ZKA/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx b/dev/ZKA/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx index 1e9e6ec1..6d5396f2 100644 --- a/dev/ZKA/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx +++ b/dev/ZKA/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx @@ -54,12 +54,12 @@ EXTERN_C Kernel::Void hal_system_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr { if (rcx <= (kSyscalls.Count() - 1)) { - Kernel::kcout << "newoskrnl: syscall: enter.\r"; + Kernel::kcout << "newoskrnl.dll: syscall: enter.\r"; if (kSyscalls[rcx].fHooked) (kSyscalls[rcx].fProc)((Kernel::VoidPtr)rdx); - Kernel::kcout << "newoskrnl: syscall: exit.\r"; + Kernel::kcout << "newoskrnl.dll: syscall: exit.\r"; } } @@ -70,11 +70,11 @@ EXTERN_C Kernel::Void hal_Kernel_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr { if (rcx <= (kSyscalls.Count() - 1)) { - Kernel::kcout << "newoskrnl: kerncall: enter.\r"; + Kernel::kcout << "newoskrnl.dll: kerncall: enter.\r"; if (kKerncalls[rcx].fHooked) (kKerncalls[rcx].fProc)((Kernel::VoidPtr)rdx); - Kernel::kcout << "newoskrnl: kerncall: exit.\r"; + Kernel::kcout << "newoskrnl.dll: kerncall: exit.\r"; } } diff --git a/dev/ZKA/HALKit/AMD64/HalCoreMPScheduler.cxx b/dev/ZKA/HALKit/AMD64/HalCoreMPScheduler.cxx index 9d9b546b..a6a27695 100644 --- a/dev/ZKA/HALKit/AMD64/HalCoreMPScheduler.cxx +++ b/dev/ZKA/HALKit/AMD64/HalCoreMPScheduler.cxx @@ -147,12 +147,11 @@ namespace Kernel::HAL struct PROCESS_CONTROL_BLOCK final { UserProcessPtr f_Process; - HAL::StackFramePtr f_Frame; } fBlocks[kSchedProcessLimitPerTeam] = {0}; EXTERN_C HAL::StackFramePtr _hal_leak_current_context(Void) { - return fBlocks[UserProcessScheduler::The().CurrentProcess().Leak().ProcessId % kSchedProcessLimitPerTeam].f_Frame; + return fBlocks[UserProcessScheduler::The().CurrentProcess().Leak().ProcessId % kSchedProcessLimitPerTeam].f_Process->StackFrame; } EXTERN_C Bool mp_register_process(HAL::StackFramePtr stack_frame) @@ -160,8 +159,7 @@ namespace Kernel::HAL if (kSMPAware) { fBlocks[UserProcessScheduler::The().CurrentProcess().Leak().ProcessId % kSchedProcessLimitPerTeam].f_Process = &UserProcessScheduler::The().CurrentProcess().Leak(); - fBlocks[UserProcessScheduler::The().CurrentProcess().Leak().ProcessId % kSchedProcessLimitPerTeam].f_Frame = stack_frame; - + return true; } @@ -193,7 +191,7 @@ namespace Kernel::HAL cSMPInterrupt = 0; kSMPCount = 0; - kcout << "newoskrnl: Probing MADT cores...\r"; + kcout << "newoskrnl.dll: Probing MADT cores...\r"; UIntPtr madt_address = kMADTBlock->Address; @@ -207,13 +205,13 @@ namespace Kernel::HAL { case 0x00: { cSMPCores[index] = kMADTBlock->List[index].LAPIC.ProcessorID; - kcout << "newoskrnl: Core ID: " << number(cSMPCores[index]) << endl; + kcout << "newoskrnl.dll: Core ID: " << number(cSMPCores[index]) << endl; ++kSMPCount; break; } case 0x05: { madt_address = kMADTBlock->List[index].LAPIC_ADDRESS_OVERRIDE.Address; - kcout << "newoskrnl: Address: " << number(madt_address) << endl; + kcout << "newoskrnl.dll: Address: " << number(madt_address) << endl; break; } } @@ -221,7 +219,7 @@ namespace Kernel::HAL ++index; } - kcout << "newoskrnl: # of cores: " << number(kSMPCount) << endl; + kcout << "newoskrnl.dll: # of cores: " << number(kSMPCount) << endl; // Kernel is now SMP aware. // That means that the scheduler is now available (on MP Kernels) diff --git a/dev/ZKA/HALKit/AMD64/HalInterruptAPI.asm b/dev/ZKA/HALKit/AMD64/HalInterruptAPI.asm index 89cb4078..2eae172a 100644 --- a/dev/ZKA/HALKit/AMD64/HalInterruptAPI.asm +++ b/dev/ZKA/HALKit/AMD64/HalInterruptAPI.asm @@ -4,7 +4,7 @@ ;; * Copyright ZKA Technologies., all rights reserved. ;; * ;; * File: HalInterruptAPI.asm -;; * Purpose: Interrupt routing, redirect raw interrupts into their handlers. +;; * Purpose: Interrupt API, redirect raw interrupts into their handlers. ;; * ;; * --------------------------------------------------- ;; */ @@ -240,56 +240,6 @@ hal_load_idt: sti ret -[global hal_switch_to_user_code] - -hal_switch_to_user_code: - ; Enable SCE that enables sysret and syscall - mov rcx, 0xc0000082 - wrmsr - mov rcx, 0xc0000080 - rdmsr - or eax, 1 - wrmsr - mov rcx, 0xc0000081 - rdmsr - mov edx, 0x00180008 - wrmsr - - mov rbx, 0x28 - mov ds, rbx - - mov rbx, 0x28 - mov fs, rbx - - mov rbx, 0x28 - mov gs, rbx - - mov rbx, 0x28 - mov es, rbx - - mov rsp, hal_user_code_stack_end - mov rcx, hal_user_code_start - - mov r11, 0x0202 - - o64 sysret - -hal_user_code_start: - hlt - nop - jmp $ -hal_user_code_end: - -section .data - -hal_user_code_sz: dq hal_user_code_end - hal_user_code_start - -section .bss - -hal_user_code_stack: - resb 4096*4 -hal_user_code_stack_end: - section .data kInterruptVectorTable: diff --git a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx index da77a13c..12926ee8 100644 --- a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx +++ b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx @@ -63,12 +63,12 @@ namespace Kernel::HAL /* GDT. */ STATIC Kernel::HAL::Detail::ZKA_GDT cGdt = { - {0, 0, 0, 0x00, 0x00, 0}, // Null entry - {0, 0, 0, 0x9A, 0xA0, 0}, // Kernel code - {0, 0, 0, 0x92, 0xA0, 0}, // Kernel data - {0, 0, 0, 0x00, 0x00, 0}, // Null entry - {0, 0, 0, 0xFA, 0xA0, 0}, // User code - {0, 0, 0, 0xF2, 0xA0, 0}, // User data + .fKernNull = { .fLimit0 = 0, .fBase0 = 0, .fBase1 = 0, .fAccessByte = 0x00, .fLimit1_Flags = 0x00, .fBase2 = 0}, // Null entry + .fKernCode = { .fLimit0 = 0, .fBase0 = 0, .fBase1 = 00, .fAccessByte = 0x9A, .fLimit1_Flags = 0xA0, .fBase2 = 0}, // Kernel code + .fKernData = { .fLimit0 = 0, .fBase0 = 0, .fBase1 = 00, .fAccessByte = 0x92, .fLimit1_Flags = 0xA0, .fBase2 = 0}, // Kernel data + .fUserNull = { .fLimit0 = 0, .fBase0 = 0, .fBase1 = 00, .fAccessByte = 0x00, .fLimit1_Flags = 0x00, .fBase2 = 0}, // Null entry + .fUserCode = { .fLimit0 = 0, .fBase0 = 0, .fBase1 = 00, .fAccessByte = 0xCF, .fLimit1_Flags = 0xA0, .fBase2 = 0}, // User code + .fUserData = { .fLimit0 = 0, .fBase0 = 0, .fBase1 = 00, .fAccessByte = 0x92, .fLimit1_Flags = 0xA0, .fBase2 = 0}, // User data }; Kernel::Void hal_real_init(Kernel::Void) noexcept; @@ -204,7 +204,7 @@ Kernel::Void hal_real_init(Kernel::Void) noexcept if (!rdxEi) return; - Kernel::kcout << "newoskrnl: " << rdxEi->fReason << "\r"; + Kernel::kcout << "newoskrnl.dll: " << rdxEi->fReason << "\r"; Kernel::UserProcessScheduler::The().CurrentProcess().Leak().Exit(rdxEi->fCode); }; @@ -240,7 +240,7 @@ Kernel::Void hal_real_init(Kernel::Void) noexcept if (kHandoverHeader->f_MultiProcessingEnabled) Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); - Kernel::kcout << "newoskrnl: Creating filesystem and such.\r"; + Kernel::kcout << "newoskrnl.dll: Creating filesystem and such.\r"; auto fs = new Kernel::NewFilesystemManager(); diff --git a/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm b/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm index f5f36b27..9ef3122c 100644 --- a/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm +++ b/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm @@ -13,6 +13,7 @@ [global mp_do_context_switch] [extern _hal_switch_context] [extern _hal_leak_current_context] +[global mp_do_context_switch_pre] section .text @@ -20,9 +21,16 @@ section .text ;; rcx: code ptr. ;; rdx: stack ptr. mp_do_context_switch: - mov r11, rdx - mov r12, rcx - + mov r11, 0x0202 + mov rsp, rdx + o64 sysret + +;; @brief Gets the current stack frame. +mp_get_current_context: + call _hal_leak_current_context + ret + +mp_do_context_switch_pre: ; Enable SCE that enables sysret and syscall mov rcx, 0xc0000082 wrmsr @@ -33,30 +41,7 @@ mp_do_context_switch: mov rcx, 0xc0000081 rdmsr mov edx, 0x00180008 - wrmsr - mov rbx, 0x28 - mov ds, rbx + wrmsr - mov rbx, 0x28 - mov fs, rbx - - mov rbx, 0x28 - mov gs, rbx - - mov rbx, 0x28 - mov es, rbx - - ;; Swap registers, since it's the other way around. - - mov rcx, r12 ;; code ptr - mov rsp, r11 ;; stack ptr - mov r11, 0x0202 - - ;; rcx and rdx already set. - o64 sysret - -;; @brief Gets the current stack frame. -mp_get_current_context: - call _hal_leak_current_context - ret + ret
\ No newline at end of file diff --git a/dev/ZKA/HALKit/AMD64/HalPageAlloc.cxx b/dev/ZKA/HALKit/AMD64/HalPageAlloc.cxx index 82eea45e..b0a490ed 100644 --- a/dev/ZKA/HALKit/AMD64/HalPageAlloc.cxx +++ b/dev/ZKA/HALKit/AMD64/HalPageAlloc.cxx @@ -99,16 +99,9 @@ namespace Kernel auto result = reinterpret_cast<VoidPtr>(vmh_header + sizeof(Detail::VIRTUAL_MEMORY_HEADER)); - VoidPtr cr3_value; + VoidPtr cr3 = hal_read_cr3(); - asm volatile( - "mov %%cr3, %0" // Move CR3 into the variable - : "=r"(cr3_value) // Output operand, cr3 page directory. - : // No input operands - : "memory" - ); - - mm_update_page(cr3_value, 0, (UIntPtr)result, eFlagsPresent | (rw ? eFlagsRw : 0) | (user ? eFlagsUser : 0)); + mm_update_page(cr3, 0, result, eFlagsPresent | (rw ? eFlagsRw : 0) | (user ? eFlagsUser : 0)); return result; } diff --git a/dev/ZKA/HALKit/AMD64/HalPageAlloc.hxx b/dev/ZKA/HALKit/AMD64/HalPageAlloc.hxx index 38666e7e..81ea2bd8 100644 --- a/dev/ZKA/HALKit/AMD64/HalPageAlloc.hxx +++ b/dev/ZKA/HALKit/AMD64/HalPageAlloc.hxx @@ -34,9 +34,9 @@ EXTERN_C void hal_flush_tlb(); EXTERN_C void hal_write_cr3(Kernel::UIntPtr pde); EXTERN_C void hal_write_cr0(Kernel::UIntPtr bit); -EXTERN_C Kernel::UIntPtr hal_read_cr0(); // @brief CPU control register. -EXTERN_C Kernel::UIntPtr hal_read_cr2(); // @brief Fault address. -EXTERN_C Kernel::UIntPtr hal_read_cr3(); // @brief Page table. +EXTERN_C Kernel::VoidPtr hal_read_cr0(); // @brief CPU control register. +EXTERN_C Kernel::VoidPtr hal_read_cr2(); // @brief Fault address. +EXTERN_C Kernel::VoidPtr hal_read_cr3(); // @brief Page table. namespace Kernel::HAL { diff --git a/dev/ZKA/HALKit/AMD64/HalProcessor.cxx b/dev/ZKA/HALKit/AMD64/HalProcessor.cxx index 367e9314..dffaed3e 100644 --- a/dev/ZKA/HALKit/AMD64/HalProcessor.cxx +++ b/dev/ZKA/HALKit/AMD64/HalProcessor.cxx @@ -2,6 +2,9 @@ Copyright ZKA Technologies. + File: HalProcessor.cxx + Purpose: Platform processor routines. + ------------------------------------------- */ #include <HALKit/AMD64/Processor.hxx> @@ -13,6 +16,29 @@ namespace Kernel::HAL { + EXTERN_C Int32 mm_update_page(VoidPtr pd_base, VoidPtr phys_addr, VoidPtr virt_addr, UInt32 flags) + { + UIntPtr pde_idx = (UIntPtr)virt_addr >> 22; + UIntPtr pte_idx = (UIntPtr)virt_addr >> 12 & 0x03FF; + + volatile PTE* pte = (volatile PTE*)((UIntPtr)pd_base + (kPTEAlign * pde_idx)); + + if (pte) + { + if ((flags & eFlagsSetPhysAddress)) + pte->PhysicalAddress = (UInt32)(UIntPtr)phys_addr; + + pte->Present = flags & eFlagsPresent; + pte->Rw = flags & eFlagsRw; + pte->User = flags & eFlagsUser; + pte->ExecDisable = flags & eFlagsExecDisable; + + return 0; + } + + return 1; + } + Void Out8(UInt16 port, UInt8 value) { asm volatile("outb %%al, %1" diff --git a/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx b/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx index 3897cb6a..b3449026 100644 --- a/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx +++ b/dev/ZKA/HALKit/AMD64/HalSchedulerCore.cxx @@ -14,15 +14,7 @@ Void UserProcess::SetEntrypoint(VoidPtr imageStart) noexcept if (imageStart == nullptr) this->Crash(); - VoidPtr cr3_pd; - - asm volatile( - "mov %%cr3, %0" // Move CR3 into the variable - : "=r"(cr3_pd) // Output operand, cr3 page directory. - : // No input operands - : "memory"); - - HAL::mm_update_page(cr3_pd, 0, (UIntPtr)imageStart, HAL::eFlagsPresent | HAL::eFlagsRw | HAL::eFlagsUser); + HAL::mm_update_page(hal_read_cr3(), 0, imageStart, HAL::eFlagsPresent | HAL::eFlagsRw | HAL::eFlagsUser); this->Image = imageStart; } diff --git a/dev/ZKA/HALKit/AMD64/Processor.hxx b/dev/ZKA/HALKit/AMD64/Processor.hxx index 68bcbec9..bb41de54 100644 --- a/dev/ZKA/HALKit/AMD64/Processor.hxx +++ b/dev/ZKA/HALKit/AMD64/Processor.hxx @@ -30,7 +30,7 @@ EXTERN_C #define kCPUBackendName "AMD64" -#define kSyscallRoute 0x32 +#define kSyscallRoute (0x32) #define IsActiveLow(FLG) (FLG & 2) #define IsLevelTriggered(FLG) (FLG & 8) @@ -77,28 +77,7 @@ namespace Kernel::HAL /// @param phys_addr a valid phyiscal address. /// @param virt_addr a valid virtual address. /// @param flags the flags to put on the page. - inline Int32 mm_update_page(VoidPtr pd_base, UIntPtr phys_addr, UIntPtr virt_addr, UInt32 flags) - { - UIntPtr pde_idx = (UIntPtr)virt_addr >> 22; - UIntPtr pte_idx = (UIntPtr)virt_addr >> 12 & 0x03FF; - - volatile PTE* pte = (volatile PTE*)((UIntPtr)pd_base + (kPTEAlign * pde_idx)); - - if (pte) - { - if ((flags & eFlagsSetPhysAddress)) - pte->PhysicalAddress = phys_addr; - - pte->Present = flags & eFlagsPresent; - pte->Rw = flags & eFlagsRw; - pte->User = flags & eFlagsUser; - pte->ExecDisable = flags & eFlagsExecDisable; - - return 0; - } - - return 1; - } + EXTERN_C Int32 mm_update_page(VoidPtr pd_base, VoidPtr phys_addr, VoidPtr virt_addr, UInt32 flags); EXTERN_C UChar In8(UInt16 port); EXTERN_C UShort In16(UInt16 port); @@ -128,9 +107,8 @@ namespace Kernel::HAL }; using RawRegister = UInt64; - using Reg = RawRegister; + using Reg = RawRegister; using InterruptId = UInt16; /* For each element in the IVT */ - /// @brief Stack frame (as retrieved from assembly.) struct PACKED StackFrame final @@ -275,7 +253,7 @@ namespace Kernel::HAL struct PACKED ALIGN(0x1000) ZKA_GDT final { - ZKA_GDT_ENTRY fNull; + ZKA_GDT_ENTRY fKernNull; ZKA_GDT_ENTRY fKernCode; ZKA_GDT_ENTRY fKernData; ZKA_GDT_ENTRY fUserNull; diff --git a/dev/ZKA/HALKit/AMD64/Storage/AHCI.cxx b/dev/ZKA/HALKit/AMD64/Storage/AHCI.cxx index c37bc01a..4fefee46 100644 --- a/dev/ZKA/HALKit/AMD64/Storage/AHCI.cxx +++ b/dev/ZKA/HALKit/AMD64/Storage/AHCI.cxx @@ -63,7 +63,7 @@ Kernel::Boolean drv_std_init(Kernel::UInt16& PortsImplemented) { if (ports_implemented) { - kcout << "newoskrnl: Port is implemented by host.\r"; + kcout << "newoskrnl.dll: Port is implemented by host.\r"; UInt8 ipm = (mem_ahci->Ports[ahci_index].Ssts >> 8) & 0x0F; UInt8 det = mem_ahci->Ports[ahci_index].Ssts & 0x0F; @@ -72,8 +72,8 @@ Kernel::Boolean drv_std_init(Kernel::UInt16& PortsImplemented) det == cAhciPresent && ipm == cAhciIPMActive) { - kcout << "newoskrnl: Found AHCI controller.\r"; - kcout << "newoskrnl: Device is of SATA type.\r"; + kcout << "newoskrnl.dll: Found AHCI controller.\r"; + kcout << "newoskrnl.dll: Device is of SATA type.\r"; detected = true; diff --git a/dev/ZKA/HALKit/AMD64/Storage/ATA-PIO.cxx b/dev/ZKA/HALKit/AMD64/Storage/ATA-PIO.cxx index 74869dc3..6dc252fc 100644 --- a/dev/ZKA/HALKit/AMD64/Storage/ATA-PIO.cxx +++ b/dev/ZKA/HALKit/AMD64/Storage/ATA-PIO.cxx @@ -68,7 +68,7 @@ Boolean drv_std_init(UInt16 Bus, UInt8 Drive, UInt16& OutBus, UInt8& OutMaster) drv_std_select(IO); - Kernel::kcout << "newoskrnl: Initializing drive...\r"; + Kernel::kcout << "newoskrnl.dll: Initializing drive...\r"; ATAInit_Retry: // Bus init, NEIN bit. @@ -80,7 +80,7 @@ ATAInit_Retry: if (statRdy & ATA_SR_ERR) { - Kernel::kcout << "newoskrnl: Failing drive...\r"; + Kernel::kcout << "newoskrnl.dll: Failing drive...\r"; return false; } @@ -107,7 +107,7 @@ ATAInit_Retry: OutMaster = (Bus == ATA_PRIMARY_IO) ? ATA_MASTER : ATA_SLAVE; - Kernel::kcout << "newoskrnl: Create ATA module.\r"; + Kernel::kcout << "newoskrnl.dll: Create ATA module.\r"; return true; } diff --git a/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx b/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx index 645e509a..eed255da 100644 --- a/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx +++ b/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx @@ -155,7 +155,7 @@ Kernel::Void hal_real_init(Kernel::Void) noexcept if (!rdxEi) return; - Kernel::kcout << "newoskrnl: " << rdxEi->fReason << "\r"; + Kernel::kcout << "newoskrnl.dll: " << rdxEi->fReason << "\r"; Kernel::UserProcessScheduler::The().Leak().CurrentProcess().Leak().Exit(rdxEi->fCode); }; @@ -192,7 +192,7 @@ Kernel::Void hal_real_init(Kernel::Void) noexcept else Kernel::HAL::mp_get_cores(nullptr); - Kernel::kcout << "newoskrnl: Creating filesystem and such.\r"; + Kernel::kcout << "newoskrnl.dll: Creating filesystem and such.\r"; auto fs = new Kernel::NewFilesystemManager(); diff --git a/dev/ZKA/HALKit/ARM64/Storage/HalFlash.cxx b/dev/ZKA/HALKit/ARM64/Storage/HalFlash.cxx index ac17d658..53238609 100644 --- a/dev/ZKA/HALKit/ARM64/Storage/HalFlash.cxx +++ b/dev/ZKA/HALKit/ARM64/Storage/HalFlash.cxx @@ -53,13 +53,13 @@ namespace Kernel /// @brief Enable flash memory at slot. STATIC Void drv_enable_flash(Int32 arg) { - kcout << "newoskrnl: Enabled FLSH hardware.\r"; + kcout << "newoskrnl.dll: Enabled FLSH hardware.\r"; } /// @brief Disable flash memory at slot. STATIC Void drv_disable_flash(Int32 arg) { - kcout << "newoskrnl: Disabled FLSH hardware.\r"; + kcout << "newoskrnl.dll: Disabled FLSH hardware.\r"; } } // namespace Kernel diff --git a/dev/ZKA/HALKit/AXP/CoreSyscallHandlerDEC.cpp b/dev/ZKA/HALKit/AXP/CoreSyscallHandlerDEC.cpp index 9d20a0f3..148fa020 100644 --- a/dev/ZKA/HALKit/AXP/CoreSyscallHandlerDEC.cpp +++ b/dev/ZKA/HALKit/AXP/CoreSyscallHandlerDEC.cpp @@ -14,11 +14,11 @@ EXTERN_C void rt_syscall_handle(Kernel::HAL::StackFrame* stack) { if (stack->Rcx <= (kSyscalls.Count() - 1)) { - Kernel::kcout << "newoskrnl: syscall: enter.\r"; + Kernel::kcout << "newoskrnl.dll: syscall: enter.\r"; if (kSyscalls[stack->Rcx].Leak().Leak().fHooked) (kSyscalls[stack->Rcx].Leak().Leak().fProc)(stack); - Kernel::kcout << "newoskrnl: syscall: exit.\r"; + Kernel::kcout << "newoskrnl.dll: syscall: exit.\r"; } } diff --git a/dev/ZKA/KernelKit/DriveManager.hxx b/dev/ZKA/KernelKit/DriveManager.hxx index 9d90a42c..fa700907 100644 --- a/dev/ZKA/KernelKit/DriveManager.hxx +++ b/dev/ZKA/KernelKit/DriveManager.hxx @@ -116,7 +116,7 @@ namespace Kernel return &mD; default: { ErrLocal() = kErrorNoSuchDisk; - kcout << "newoskrnl: No such disk.\n"; + kcout << "newoskrnl.dll: No such disk.\n"; break; } diff --git a/dev/ZKA/KernelKit/FileManager.hxx b/dev/ZKA/KernelKit/FileManager.hxx index cbfc1e30..daaf65b3 100644 --- a/dev/ZKA/KernelKit/FileManager.hxx +++ b/dev/ZKA/KernelKit/FileManager.hxx @@ -2,6 +2,9 @@ Copyright ZKA Technologies. + File: FileManager.hxx + Purpose: Kernel file manager. + ------------------------------------------- */ /* ------------------------------------------- @@ -405,7 +408,7 @@ namespace Kernel } } - kcout << "newoskrnl: new file: " << path << ".\r"; + kcout << "newoskrnl.dll: new file: " << path << ".\r"; } /// @brief destructor diff --git a/dev/ZKA/KernelKit/Heap.hxx b/dev/ZKA/KernelKit/Heap.hxx index 5ce5a293..65b71774 100644 --- a/dev/ZKA/KernelKit/Heap.hxx +++ b/dev/ZKA/KernelKit/Heap.hxx @@ -16,19 +16,19 @@ namespace Kernel { /// @brief Declare pointer as free. - /// @param allocatedPtr the pointer. + /// @param heap_ptr the pointer. /// @return - Int32 mm_delete_ke_heap(voidPtr allocatedPtr); + Int32 mm_delete_ke_heap(voidPtr heap_ptr); - /// @brief Declare a new size for allocatedPtr. - /// @param allocatedPtr the pointer. + /// @brief Declare a new size for heap_ptr. + /// @param heap_ptr the pointer. /// @return - voidPtr mm_realloc_ke_heap(voidPtr allocatedPtr, SizeT newSz); + voidPtr mm_realloc_ke_heap(voidPtr heap_ptr, SizeT new_sz); /// @brief Check if pointer is a valid Kernel pointer. - /// @param allocatedPtr the pointer + /// @param heap_ptr the pointer /// @return if it exists. - Boolean mm_is_valid_heap(VoidPtr allocatedPtr); + Boolean mm_is_valid_heap(VoidPtr heap_ptr); /// @brief allocate chunk of memory. /// @param sz size of pointer @@ -38,14 +38,14 @@ namespace Kernel VoidPtr mm_new_ke_heap(const SizeT sz, const Bool rw, const Bool user); /// @brief Protect the heap with a CRC value. - /// @param allocatedPtr pointer. + /// @param heap_ptr pointer. /// @return if it valid: point has crc now., otherwise fail. - Boolean mm_protect_ke_heap(VoidPtr allocatedPtr); + Boolean mm_protect_ke_heap(VoidPtr heap_ptr); /// @brief Makes a Kernel page. - /// @param allocatedPtr the page pointer. + /// @param heap_ptr the page pointer. /// @return - Int32 mm_make_ke_page(VoidPtr allocatedPtr); + Int32 mm_make_ke_page(VoidPtr heap_ptr); } // namespace Kernel #endif // !_INC_KERNEL_HEAP_HXX_ diff --git a/dev/ZKA/KernelKit/UserProcessScheduler.hxx b/dev/ZKA/KernelKit/UserProcessScheduler.hxx index fafe474c..3a393874 100644 --- a/dev/ZKA/KernelKit/UserProcessScheduler.hxx +++ b/dev/ZKA/KernelKit/UserProcessScheduler.hxx @@ -286,7 +286,7 @@ namespace Kernel class ProcessHelper final { public: - STATIC bool Switch(VoidPtr image_ptr, UInt8* stack, HAL::StackFramePtr frame_ptr, const PID& new_pid); + STATIC bool Switch(VoidPtr image_ptr, UInt8* stack_ptr, HAL::StackFramePtr frame_ptr, const PID& new_pid); STATIC bool CanBeScheduled(UserProcess& process); STATIC PID& TheCurrentPID(); STATIC SizeT StartScheduling(); diff --git a/dev/ZKA/NetworkKit/NetworkDevice.inl b/dev/ZKA/NetworkKit/NetworkDevice.inl index 5579eba3..9fa34298 100644 --- a/dev/ZKA/NetworkKit/NetworkDevice.inl +++ b/dev/ZKA/NetworkKit/NetworkDevice.inl @@ -15,7 +15,7 @@ namespace Kernel void (*on_cleanup)(void)) : DeviceInterface<NetworkDeviceCommand>(out, in), fCleanup(on_cleanup) { - kcout << "newoskrnl: NetworkDevice initialized.\r"; + kcout << "newoskrnl.dll: NetworkDevice initialized.\r"; MUST_PASS(out && in && on_cleanup); } @@ -24,7 +24,7 @@ namespace Kernel { MUST_PASS(fCleanup); - kcout << "newoskrnl: NetworkDevice cleanup.\r"; + kcout << "newoskrnl.dll: NetworkDevice cleanup.\r"; if (fCleanup) fCleanup(); diff --git a/dev/ZKA/Sources/CxxAbi-AMD64.cxx b/dev/ZKA/Sources/CxxAbi-AMD64.cxx index 66fae2f5..ab4f8147 100644 --- a/dev/ZKA/Sources/CxxAbi-AMD64.cxx +++ b/dev/ZKA/Sources/CxxAbi-AMD64.cxx @@ -19,7 +19,7 @@ Kernel::UIntPtr __dso_handle; EXTERN_C void __cxa_pure_virtual() { - Kernel::kcout << "newoskrnl: C++ placeholder method.\n"; + Kernel::kcout << "newoskrnl.dll: C++ placeholder method.\n"; } EXTERN_C void ___chkstk_ms(void) diff --git a/dev/ZKA/Sources/CxxAbi-ARM64.cxx b/dev/ZKA/Sources/CxxAbi-ARM64.cxx index 798cecab..1475ae85 100644 --- a/dev/ZKA/Sources/CxxAbi-ARM64.cxx +++ b/dev/ZKA/Sources/CxxAbi-ARM64.cxx @@ -68,7 +68,7 @@ EXTERN_C void __cdecl _Init_thread_footer(int* const pOnce) noexcept EXTERN_C void _purecall() { - Kernel::kcout << "newoskrnl: C++ placeholder method.\n"; + Kernel::kcout << "newoskrnl.dll: C++ placeholder method.\n"; } #endif // ifdef __ZKA_ARM64__ diff --git a/dev/ZKA/Sources/DLLInterface.cxx b/dev/ZKA/Sources/DLLInterface.cxx index 13ee07cf..1c08b860 100644 --- a/dev/ZKA/Sources/DLLInterface.cxx +++ b/dev/ZKA/Sources/DLLInterface.cxx @@ -21,6 +21,6 @@ using namespace Kernel; EXTERN_C void __zka_pure_call(void) { - kcout << "newoskrnl: Unimplemented entrypoint symbol!\r"; + kcout << "newoskrnl.dll: Unimplemented entrypoint symbol!\r"; UserProcessScheduler::The().CurrentProcess().Leak().Crash(); } diff --git a/dev/ZKA/Sources/DLLMain.cxx b/dev/ZKA/Sources/DLLMain.cxx index e4352a00..514834d0 100644 --- a/dev/ZKA/Sources/DLLMain.cxx +++ b/dev/ZKA/Sources/DLLMain.cxx @@ -215,12 +215,6 @@ EXTERN_C Kernel::Void ke_dll_entrypoint(Kernel::Void) CG::CGDrawStringToWnd(cKernelWnd, kSysDrv, 20, 10 + (FONT_SIZE_X * Kernel::rt_string_len("newoskrnl.dll: Missing catalog: ")), RGB(0, 0, 0)); } - hal_switch_to_user_code(); - - while (Yes) - { - Kernel::ProcessHelper::StartScheduling(); - } - + Kernel::ProcessHelper::StartScheduling(); Kernel::ke_stop(RUNTIME_CHECK_BOOTSTRAP); } diff --git a/dev/ZKA/Sources/DriveManager.cxx b/dev/ZKA/Sources/DriveManager.cxx index 575fe499..95fbed68 100644 --- a/dev/ZKA/Sources/DriveManager.cxx +++ b/dev/ZKA/Sources/DriveManager.cxx @@ -139,7 +139,7 @@ namespace Kernel trait.fVerify = ke_drv_check_disk; trait.fDriveKind = io_drive_kind; - kcout << "newoskrnl: Construct drive with success.\r"; + kcout << "newoskrnl.dll: Construct drive with success.\r"; return trait; } diff --git a/dev/ZKA/Sources/FS/NewFS.cxx b/dev/ZKA/Sources/FS/NewFS.cxx index 56707738..edec6a6e 100644 --- a/dev/ZKA/Sources/FS/NewFS.cxx +++ b/dev/ZKA/Sources/FS/NewFS.cxx @@ -68,7 +68,7 @@ _Output NFS_FORK_STRUCT* NewFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* cata Lba lba = (theFork.Kind == kNewFSDataForkKind) ? catalog->DataFork : catalog->ResourceFork; - kcout << "newoskrnl: fork lba: " << hex_number(lba) << endl; + kcout << "newoskrnl.dll: fork lba: " << hex_number(lba) << endl; if (lba <= kNewFSCatalogStartAddress) return nullptr; @@ -97,22 +97,22 @@ _Output NFS_FORK_STRUCT* NewFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* cata if (curFork.NextSibling > kBadAddress) { - kcout << "newoskrnl: bad fork: " << hex_number(curFork.NextSibling) << endl; + kcout << "newoskrnl.dll: bad fork: " << hex_number(curFork.NextSibling) << endl; break; } - kcout << "newoskrnl: next fork: " << hex_number(curFork.NextSibling) << endl; + kcout << "newoskrnl.dll: next fork: " << hex_number(curFork.NextSibling) << endl; if (curFork.Flags == kNewFSFlagCreated) { - kcout << "newoskrnl: fork already exists.\r"; + kcout << "newoskrnl.dll: fork already exists.\r"; /// sanity check. if (StringBuilder::Equals(curFork.ForkName, theFork.ForkName) && StringBuilder::Equals(curFork.CatalogName, catalog->Name)) return nullptr; - kcout << "newoskrnl: next fork: " << hex_number(curFork.NextSibling) << endl; + kcout << "newoskrnl.dll: next fork: " << hex_number(curFork.NextSibling) << endl; lbaOfPreviousFork = lba; lba = curFork.NextSibling; @@ -154,10 +154,10 @@ _Output NFS_FORK_STRUCT* NewFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* cata drv.fOutput(&drv.fPacket); /// log what we have now. - kcout << "newoskrnl: Wrote fork data at: " << hex_number(theFork.DataOffset) + kcout << "newoskrnl.dll: Wrote fork data at: " << hex_number(theFork.DataOffset) << endl; - kcout << "newoskrnl: Wrote fork at: " << hex_number(lba) << endl; + kcout << "newoskrnl.dll: Wrote fork at: " << hex_number(lba) << endl; return &theFork; } @@ -242,11 +242,11 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, _Input const Int32& flags, _Input const Int32& kind) { - kcout << "newoskrnl: CreateCatalog(...)\r"; + kcout << "newoskrnl.dll: CreateCatalog(...)\r"; Lba out_lba = 0UL; - kcout << "newoskrnl: Checking for extension...\r"; + kcout << "newoskrnl.dll: Checking for extension...\r"; /// a directory should have a slash in the end. if (kind == kNewFSCatalogKindDir && @@ -262,7 +262,7 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, if (catalog_copy) { - kcout << "newoskrnl: Catalog already exists: " << name << ".\r"; + kcout << "newoskrnl.dll: Catalog already exists: " << name << ".\r"; ErrLocal() = kErrorFileExists; return catalog_copy; @@ -277,7 +277,7 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, if (*parentName == 0) { - kcout << "newoskrnl: Parent name is NUL.\r"; + kcout << "newoskrnl.dll: Parent name is NUL.\r"; ErrLocal() = kErrorFileNotFound; return nullptr; } @@ -309,7 +309,7 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, if (catalog && catalog->Kind == kNewFSCatalogKindFile) { - kcout << "newoskrnl: Parent name is file.\r"; + kcout << "newoskrnl.dll: Parent name is file.\r"; delete catalog; return nullptr; } @@ -434,9 +434,9 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, drive.fOutput(&drive.fPacket); - kcout << "newoskrnl: Create new catalog, status: " + kcout << "newoskrnl.dll: Create new catalog, status: " << hex_number(catalogChild->Flags) << endl; - kcout << "newoskrnl: Create new catalog, name: " << catalogChild->Name + kcout << "newoskrnl.dll: Create new catalog, name: " << catalogChild->Name << endl; delete catalog; @@ -600,14 +600,14 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endL drive->fOutput(&drive->fPacket); - kcout << "newoskrnl: drive kind: " << drive->fDriveKind() << endl; + kcout << "newoskrnl.dll: drive kind: " << drive->fDriveKind() << endl; - kcout << "newoskrnl: partition name: " << partBlock->PartitionName << endl; - kcout << "newoskrnl: start: " << hex_number(partBlock->StartCatalog) << endl; - kcout << "newoskrnl: number of catalogs: " << hex_number(partBlock->CatalogCount) << endl; - kcout << "newoskrnl: free catalog: " << hex_number(partBlock->FreeCatalog) << endl; - kcout << "newoskrnl: free sectors: " << hex_number(partBlock->FreeSectors) << endl; - kcout << "newoskrnl: sector size: " << hex_number(partBlock->SectorSize) << endl; + kcout << "newoskrnl.dll: partition name: " << partBlock->PartitionName << endl; + kcout << "newoskrnl.dll: start: " << hex_number(partBlock->StartCatalog) << endl; + kcout << "newoskrnl.dll: number of catalogs: " << hex_number(partBlock->CatalogCount) << endl; + kcout << "newoskrnl.dll: free catalog: " << hex_number(partBlock->FreeCatalog) << endl; + kcout << "newoskrnl.dll: free sectors: " << hex_number(partBlock->FreeSectors) << endl; + kcout << "newoskrnl.dll: sector size: " << hex_number(partBlock->SectorSize) << endl; // write the root catalog. this->CreateCatalog(kNewFSRoot, 0, kNewFSCatalogKindDir); @@ -615,7 +615,7 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endL return true; } - kcout << "newoskrnl: partition block already exists.\r"; + kcout << "newoskrnl.dll: partition block already exists.\r"; start += partBlock->DiskSize; @@ -660,7 +660,7 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool { ErrLocal() = kErrorDiskIsCorrupted; - kcout << "newoskrnl: Invalid fork offset.\r"; + kcout << "newoskrnl.dll: Invalid fork offset.\r"; return false; } @@ -689,7 +689,7 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool drive.fPacket.fPacketSize = sizeOfData; drive.fPacket.fLba = startFork + sizeof(NFS_FORK_STRUCT); - kcout << "newoskrnl: data offset: " << hex_number(forkDataIn->DataOffset) << endl; + kcout << "newoskrnl.dll: data offset: " << hex_number(forkDataIn->DataOffset) << endl; drive.fOutput(&drive.fPacket); @@ -699,7 +699,7 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool drive.fOutput(&drive.fPacket); - kcout << "newoskrnl: wrote fork at offset: " << hex_number(forkDataIn->DataOffset) << endl; + kcout << "newoskrnl.dll: wrote fork at offset: " << hex_number(forkDataIn->DataOffset) << endl; delete catalog; @@ -722,7 +722,7 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool _Output NFS_CATALOG_STRUCT* NewFSParser::FindCatalog(_Input const Char* catalogName, Lba& out_lba) { - kcout << "newoskrnl: start finding catalog...\r"; + kcout << "newoskrnl.dll: start finding catalog...\r"; NFS_ROOT_PARTITION_BLOCK fs_buf{0}; auto drive = sMountpointInterface.A(); @@ -790,7 +790,7 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::FindCatalog(_Input const Char* catalogN } } - kcout << "newoskrnl: fetching catalog...\r"; + kcout << "newoskrnl.dll: fetching catalog...\r"; NewFSSearchThroughCatalogList: while (drive.fPacket.fPacketGood) @@ -814,8 +814,8 @@ NewFSSearchThroughCatalogList: NFS_CATALOG_STRUCT* catalogPtr = new NFS_CATALOG_STRUCT(); rt_copy_memory(catalog, catalogPtr, sizeof(NFS_CATALOG_STRUCT)); - kcout << "newoskrnl: found catalog at: " << hex_number(startCatalogList) << endl; - kcout << "newoskrnl: found catalog at: " << catalog->Name << endl; + kcout << "newoskrnl.dll: found catalog at: " << hex_number(startCatalogList) << endl; + kcout << "newoskrnl.dll: found catalog at: " << catalog->Name << endl; out_lba = startCatalogList; return catalogPtr; @@ -945,7 +945,7 @@ VoidPtr NewFSParser::ReadCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Lba dataForkLba = (!isRsrcFork) ? catalog->DataFork : catalog->ResourceFork; Size dataForkSize = (!isRsrcFork) ? catalog->DataForkSize : catalog->ResourceForkSize; - kcout << "newoskrnl: catalog " << catalog->Name + kcout << "newoskrnl.dll: catalog " << catalog->Name << ", fork: " << hex_number(dataForkLba) << endl; NFS_FORK_STRUCT* fs_buf = new NFS_FORK_STRUCT(); @@ -966,8 +966,8 @@ VoidPtr NewFSParser::ReadCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, fs_fork_data = fs_buf; - kcout << "newoskrnl: ForkName: " << fs_fork_data->ForkName << endl; - kcout << "newoskrnl: CatalogName: " << fs_fork_data->CatalogName << endl; + kcout << "newoskrnl.dll: ForkName: " << fs_fork_data->ForkName << endl; + kcout << "newoskrnl.dll: CatalogName: " << fs_fork_data->CatalogName << endl; if (StringBuilder::Equals(forkName, fs_fork_data->ForkName) && StringBuilder::Equals(catalog->Name, fs_fork_data->CatalogName)) @@ -1029,18 +1029,18 @@ namespace Kernel::Detail /***********************************************************************************/ Boolean fs_init_newfs(Void) noexcept { - kcout << "newoskrnl: Creating drives...\r"; + kcout << "newoskrnl.dll: Creating drives...\r"; sMountpointInterface.A() = io_construct_main_drive(); sMountpointInterface.B() = io_construct_drive(); sMountpointInterface.C() = io_construct_drive(); sMountpointInterface.D() = io_construct_drive(); - kcout << "newoskrnl: Testing main drive...\r"; + kcout << "newoskrnl.dll: Testing main drive...\r"; sMountpointInterface.A().fVerify(&sMountpointInterface.A().fPacket); - kcout << "newoskrnl: Testing main drive [ OK ]...\r"; + kcout << "newoskrnl.dll: Testing main drive [ OK ]...\r"; return true; } diff --git a/dev/ZKA/Sources/IndexableProperty.cxx b/dev/ZKA/Sources/IndexableProperty.cxx index f65e6f3f..e63a7a63 100644 --- a/dev/ZKA/Sources/IndexableProperty.cxx +++ b/dev/ZKA/Sources/IndexableProperty.cxx @@ -52,7 +52,7 @@ namespace Kernel indexer.AddFlag(kIndexerClaimed); rt_copy_memory((VoidPtr)indexer.Leak().Path, (VoidPtr)filename, filenameLen); - kcout << "newoskrnl: filesystem: index new file: " << filename << endl; + kcout << "newoskrnl.dll: filesystem: index new file: " << filename << endl; } } } // namespace Indexer diff --git a/dev/ZKA/Sources/KernelCheck.cxx b/dev/ZKA/Sources/KernelCheck.cxx index db157601..4ef8a933 100644 --- a/dev/ZKA/Sources/KernelCheck.cxx +++ b/dev/ZKA/Sources/KernelCheck.cxx @@ -79,7 +79,7 @@ namespace Kernel break; } case RUNTIME_CHECK_BOOTSTRAP: { - CGDrawString("0x0000000A End of boot code, but nothing to continue.", start_y, x, panicTxt); + CGDrawString("0x0000000A End of boot code...", start_y, x, panicTxt); RecoveryFactory::Recover(); break; } @@ -125,7 +125,7 @@ namespace Kernel HardwareTimer timer(cMaxSeconds); timer.Wait(); - kcout << "newoskrnl: Shutting down computer...\r"; + kcout << "newoskrnl.dll: Shutting down computer...\r"; PowerFactoryInterface power(nullptr); power.Shutdown(); diff --git a/dev/ZKA/Sources/MP.cxx b/dev/ZKA/Sources/MP.cxx index 5df86fd6..b0716e77 100644 --- a/dev/ZKA/Sources/MP.cxx +++ b/dev/ZKA/Sources/MP.cxx @@ -102,6 +102,7 @@ namespace Kernel if (!ret) { + mp_do_context_switch_pre(); return mp_do_context_switch(image, stack_ptr, fStack) != 0; } @@ -122,12 +123,12 @@ namespace Kernel ///! @brief Default constructor. HardwareThreadScheduler::HardwareThreadScheduler() { - kcout << "newoskrnl: initializing HardwareThreadScheduler." << endl; + kcout << "newoskrnl.dll: initializing HardwareThreadScheduler." << endl; cSMPCoreName.GetKey() += "Property\\MPClass"; cSMPCoreName.GetValue() = (PropertyId)this; - kcout << "newoskrnl: initialized HardwareThreadScheduler." << endl; + kcout << "newoskrnl.dll: initialized HardwareThreadScheduler." << endl; } ///! @brief Default destructor. diff --git a/dev/ZKA/Sources/NewFS+FileManager.cxx b/dev/ZKA/Sources/NewFS+FileManager.cxx index 6f50733f..d6d7a826 100644 --- a/dev/ZKA/Sources/NewFS+FileManager.cxx +++ b/dev/ZKA/Sources/NewFS+FileManager.cxx @@ -20,12 +20,12 @@ namespace Kernel MUST_PASS(Detail::fs_init_newfs()); fImpl = new NewFSParser(); - kcout << "newoskrnl: We are done here... (NewFilesystemManager).\r"; + kcout << "newoskrnl.dll: We are done here... (NewFilesystemManager).\r"; } NewFilesystemManager::~NewFilesystemManager() { - kcout << "newoskrnl: Destroying it...\r"; + kcout << "newoskrnl.dll: Destroying it...\r"; if (fImpl) { diff --git a/dev/ZKA/Sources/PEFCodeManager.cxx b/dev/ZKA/Sources/PEFCodeManager.cxx index 8dbfd029..11743373 100644 --- a/dev/ZKA/Sources/PEFCodeManager.cxx +++ b/dev/ZKA/Sources/PEFCodeManager.cxx @@ -166,6 +166,8 @@ namespace Kernel rt_copy_memory((VoidPtr)((Char*)blob + sizeof(PEFCommandHeader)), blobRet, container_header->Size); + HAL::mm_update_page(hal_read_cr3(), 0, blobRet, HAL::eFlagsPresent | HAL::eFlagsUser | (container_header->Kind != kPefCode ? HAL::eFlagsRw : 0)); + mm_delete_ke_heap(blob); return blobRet; } diff --git a/dev/ZKA/Sources/ThreadLocalStorage.cxx b/dev/ZKA/Sources/ThreadLocalStorage.cxx index 4ee2494e..c8befa98 100644 --- a/dev/ZKA/Sources/ThreadLocalStorage.cxx +++ b/dev/ZKA/Sources/ThreadLocalStorage.cxx @@ -72,7 +72,7 @@ Boolean tls_check_tib(THREAD_INFORMATION_BLOCK* the_tib) Encoder encoder; const char* tibAsBytes = encoder.AsBytes(the_tib); - kcout << "newoskrnl: checking for a valid cookie inside the TIB...\r"; + kcout << "newoskrnl.dll: checking for a valid cookie inside the TIB...\r"; return tibAsBytes[0] == kCookieMag0 && tibAsBytes[1] == kCookieMag1 && tibAsBytes[2] == kCookieMag2; @@ -87,7 +87,7 @@ EXTERN_C Bool tls_check_syscall_impl(Kernel::VoidPtr tib_ptr) noexcept { if (!tib_ptr) { - kcout << "newoskrnl: failing because of an invalid TIB...\r"; + kcout << "newoskrnl.dll: failing because of an invalid TIB...\r"; return false; } @@ -95,10 +95,10 @@ EXTERN_C Bool tls_check_syscall_impl(Kernel::VoidPtr tib_ptr) noexcept if (!tls_check_tib(tib_struct)) { - kcout << "newoskrnl: crashing because of an invalid TIB...\r"; + kcout << "newoskrnl.dll: crashing because of an invalid TIB...\r"; return false; } - kcout << "newoskrnl: Verification succeeded! staying alive...\r"; + kcout << "newoskrnl.dll: Verification succeeded! staying alive...\r"; return true; } diff --git a/dev/ZKA/Sources/User.cxx b/dev/ZKA/Sources/User.cxx index b3b62d8b..cb907387 100644 --- a/dev/ZKA/Sources/User.cxx +++ b/dev/ZKA/Sources/User.cxx @@ -5,7 +5,7 @@ * Copyright ZKA Technologies., all rights reserved. * * File: User.cxx - * Purpose: User concept class. + * Purpose: User class, used to provide authentication and security. * * ======================================================== */ @@ -100,7 +100,7 @@ namespace Kernel delete[] password; password = nullptr; - kcout << "newoskrnl: Saved password...\r"; + kcout << "newoskrnl.dll: Saved password...\r"; return true; } diff --git a/dev/ZKA/Sources/UserProcessScheduler.cxx b/dev/ZKA/Sources/UserProcessScheduler.cxx index 2d018b33..60dbdd1b 100644 --- a/dev/ZKA/Sources/UserProcessScheduler.cxx +++ b/dev/ZKA/Sources/UserProcessScheduler.cxx @@ -260,7 +260,7 @@ namespace Kernel if (!process.StackReserve) { process.StackReserve = (UInt8*)mm_new_ke_heap(kSchedMaxStackSz, Yes, Yes); - kcout << "newoskrnl: Use fallback reserve.\r"; + kcout << "newoskrnl.dll: Use fallback reserve.\r"; } } else @@ -419,7 +419,7 @@ namespace Kernel cProcessScheduler = new UserProcessScheduler(); MUST_PASS(cProcessScheduler); - kcout << "newoskrnl: Team capacity: " << number(cProcessScheduler->CurrentTeam().AsArray().Capacity()) << endl; + kcout << "newoskrnl.dll: Team capacity: " << number(cProcessScheduler->CurrentTeam().AsArray().Capacity()) << endl; } SizeT ret = cProcessScheduler->Run(); @@ -437,7 +437,7 @@ namespace Kernel if (!stack || !frame_ptr || !image_ptr || new_pid < 0) return false; - kcout << "newoskrnl: Finding hardware thread...\r"; + kcout << "newoskrnl.dll: Finding hardware thread...\r"; for (SizeT index = 0UL; index < HardwareThreadScheduler::The().Count(); ++index) { @@ -456,7 +456,7 @@ namespace Kernel ProcessHelper::TheCurrentPID() = new_pid; - kcout << "newoskrnl: Found hardware thread...\r"; + kcout << "newoskrnl.dll: Found hardware thread...\r"; bool ret = HardwareThreadScheduler::The()[index].Leak()->Switch(image_ptr, stack, frame_ptr); |
