diff options
Diffstat (limited to 'dev')
27 files changed, 139 insertions, 126 deletions
diff --git a/dev/ZBA/amd64-efi.make b/dev/ZBA/amd64-efi.make index 497dc8e9..5d5071e0 100644 --- a/dev/ZBA/amd64-efi.make +++ b/dev/ZBA/amd64-efi.make @@ -29,7 +29,7 @@ IMG=epm-master-1.img IMG_2=epm-slave.img IMG_3=epm-master-2.img -EMU_FLAGS=-net none -m 12G -M q35 \ +EMU_FLAGS=-net none -m 8G -M q35 \ -bios $(BIOS) -device piix3-ide,id=ide \ -drive id=disk,file=$(IMG),format=raw,if=none \ -device ide-hd,drive=disk,bus=ide.0 -drive \ diff --git a/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx b/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx index 7bafd075..221cb044 100644 --- a/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx +++ b/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx @@ -37,11 +37,13 @@ namespace Kernel { ptr_bit_set[0] = cVMHMagic; ptr_bit_set[1] = size; + ptr_bit_set[2] = __BIGGEST_ALIGNMENT__; - kcout << "BBP: STATUS\r"; - kcout << "BBP: MAG: " << hex_number(ptr_bit_set[0]) << endl; - kcout << "BBP: ADDRESS: " << hex_number((UIntPtr)ptr_bit_set) << endl; - kcout << "BBP: SIZE: " << hex_number(ptr_bit_set[1]) << endl; + kcout << "ALLOC STATUS\r"; + kcout << "MAG: " << hex_number(ptr_bit_set[0]) << endl; + kcout << "ADDRESS: " << hex_number((UIntPtr)ptr_bit_set) << endl; + kcout << "SIZE: " << hex_number(ptr_bit_set[1]) << endl; + kcout << "ALLOC STATUS\r"; if (rw) mm_update_pte(base_ptr, eFlagsRw); @@ -49,10 +51,10 @@ namespace Kernel if (user) mm_update_pte(base_ptr, eFlagsUser); - return (VoidPtr)(&ptr_bit_set[2]); + return (VoidPtr)ptr_bit_set; } - base_ptr = reinterpret_cast<VoidPtr>(reinterpret_cast<UIntPtr>(base_ptr) + 1 + ptr_bit_set[1]); + base_ptr = reinterpret_cast<VoidPtr>(reinterpret_cast<UIntPtr>(base_ptr) + __BIGGEST_ALIGNMENT__ + ptr_bit_set[1]); } return nullptr; @@ -71,7 +73,7 @@ namespace Kernel ptr_new = traits.FindBitMap(kKernelVirtualStart, size, rw, user); - return &((UIntPtr*)ptr_new)[1]; + return ((UIntPtr*)ptr_new); } auto mm_free_bitmap(VoidPtr page_ptr) -> Bool @@ -79,19 +81,21 @@ namespace Kernel if (!page_ptr) return false; - UIntPtr* ptr_bit_set = reinterpret_cast<UIntPtr*>(page_ptr) - 3; + UIntPtr* ptr_bit_set = reinterpret_cast<UIntPtr*>(page_ptr); if (!ptr_bit_set[0] || ptr_bit_set[0] != cVMHMagic) - return false; + return false; - kcout << "BBP: FREE STATUS\r"; - kcout << "BBP: MAG: " << hex_number(ptr_bit_set[0]) << endl; - kcout << "BBP: ADDRESSS: " << hex_number((UIntPtr)ptr_bit_set) << endl; - kcout << "BBP: SIZE: " << hex_number(ptr_bit_set[1]) << endl; + kcout << "FREE STATUS\r"; + kcout << "MAG: " << hex_number(ptr_bit_set[0]) << endl; + kcout << "ADDRESSS: " << hex_number((UIntPtr)ptr_bit_set) << endl; + kcout << "SIZE: " << hex_number(ptr_bit_set[1]) << endl; + kcout << "FREE STATUS\r"; ptr_bit_set[0] = 0UL; ptr_bit_set[1] = 0UL; + ptr_bit_set[2] = __BIGGEST_ALIGNMENT__; return true; } diff --git a/dev/ZKA/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx b/dev/ZKA/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx index 1bb54588..1be22e7d 100644 --- a/dev/ZKA/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx +++ b/dev/ZKA/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx @@ -63,12 +63,12 @@ EXTERN_C Kernel::Void hal_system_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr { if (rcx <= (kSyscalls.Count() - 1)) { - Kernel::kcout << "newoskrnl.exe: syscall: enter.\r"; + kcout << "syscall: enter.\r"; if (kSyscalls[rcx].fHooked) (kSyscalls[rcx].fProc)((Kernel::VoidPtr)rdx); - Kernel::kcout << "newoskrnl.exe: syscall: exit.\r"; + kcout << "syscall: exit.\r"; } } @@ -79,11 +79,11 @@ EXTERN_C Kernel::Void hal_kernel_call_enter(Kernel::UIntPtr rcx, Kernel::UIntPtr { if (rcx <= (kSyscalls.Count() - 1)) { - Kernel::kcout << "newoskrnl.exe: kerncall: enter.\r"; + kcout << "kerncall: enter.\r"; if (kKerncalls[rcx].fHooked) (kKerncalls[rcx].fProc)((Kernel::VoidPtr)rdx); - Kernel::kcout << "newoskrnl.exe: kerncall: exit.\r"; + kcout << "kerncall: exit.\r"; } } diff --git a/dev/ZKA/HALKit/AMD64/HalCoreMPScheduler.cxx b/dev/ZKA/HALKit/AMD64/HalCoreMPScheduler.cxx index b524b04c..f985deb7 100644 --- a/dev/ZKA/HALKit/AMD64/HalCoreMPScheduler.cxx +++ b/dev/ZKA/HALKit/AMD64/HalCoreMPScheduler.cxx @@ -191,7 +191,7 @@ namespace Kernel::HAL cSMPInterrupt = 0; kSMPCount = 0; - kcout << "newoskrnl.exe: Probing MADT cores...\r"; + kcout << "Probing MADT cores...\r"; UIntPtr madt_address = kMADTBlock->Address; @@ -205,13 +205,13 @@ namespace Kernel::HAL { case 0x00: { cSMPCores[index] = kMADTBlock->List[index].LAPIC.ProcessorID; - kcout << "newoskrnl.exe: Core ID: " << number(cSMPCores[index]) << endl; + kcout << "Core ID: " << number(cSMPCores[index]) << endl; ++kSMPCount; break; } case 0x05: { madt_address = kMADTBlock->List[index].LAPIC_ADDRESS_OVERRIDE.Address; - kcout << "newoskrnl.exe: Address: " << number(madt_address) << endl; + kcout << "Address: " << number(madt_address) << endl; break; } } @@ -219,7 +219,7 @@ namespace Kernel::HAL ++index; } - kcout << "newoskrnl.exe: # of cores: " << number(kSMPCount) << endl; + kcout << "# 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/HalKernelMain.cxx b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx index 10916b06..79d9c097 100644 --- a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx +++ b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx @@ -125,7 +125,7 @@ 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::kcout << "newoskrnl.exe: Creating filesystem and such.\r"; + kcout << "Creating filesystem and such.\r"; auto fs = new Kernel::NewFilesystemMgr(); diff --git a/dev/ZKA/HALKit/AMD64/Storage/AHCI.cxx b/dev/ZKA/HALKit/AMD64/Storage/AHCI.cxx index 889b8c39..7eaa5bbb 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.exe: Port is implemented by host.\r"; + kcout << "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.exe: Found AHCI controller.\r"; - kcout << "newoskrnl.exe: Device is of SATA type.\r"; + kcout << "Found AHCI controller.\r"; + kcout << "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 052f8c64..bc1a1f22 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.exe: Initializing drive...\r"; + kcout << "Initializing drive...\r"; ATAInit_Retry: // Bus init, NEIN bit. @@ -80,7 +80,7 @@ ATAInit_Retry: if (statRdy & ATA_SR_ERR) { - Kernel::kcout << "newoskrnl.exe: Failing drive...\r"; + kcout << "Failing drive...\r"; return false; } @@ -107,7 +107,7 @@ ATAInit_Retry: OutMaster = (Bus == ATA_PRIMARY_IO) ? ATA_MASTER : ATA_SLAVE; - Kernel::kcout << "newoskrnl.exe: Created IDE module.\r"; + kcout << "Created IDE module.\r"; return true; } diff --git a/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx b/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx index ee06c305..140c3370 100644 --- a/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx +++ b/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx @@ -92,7 +92,7 @@ Kernel::Void hal_real_init(Kernel::Void) noexcept else Kernel::HAL::mp_get_cores(nullptr); - Kernel::kcout << "newoskrnl.exe: Creating filesystem and such.\r"; + kcout << "Creating filesystem and such.\r"; auto fs = new Kernel::NewFilesystemMgr(); diff --git a/dev/ZKA/HALKit/ARM64/Storage/HalFlash.cxx b/dev/ZKA/HALKit/ARM64/Storage/HalFlash.cxx index 97950a78..f1f6c718 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.exe: Enabled FLSH hardware.\r"; + kcout << "Enabled FLSH hardware.\r"; } /// @brief Disable flash memory at slot. STATIC Void drv_disable_flash(Int32 arg) { - kcout << "newoskrnl.exe: Disabled FLSH hardware.\r"; + kcout << "Disabled FLSH hardware.\r"; } } // namespace Kernel diff --git a/dev/ZKA/HALKit/AXP/CoreSyscallHandlerDEC.cpp b/dev/ZKA/HALKit/AXP/CoreSyscallHandlerDEC.cpp index 5f71380d..254e1ab6 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.exe: syscall: enter.\r"; + kcout << "syscall: enter.\r"; if (kSyscalls[stack->Rcx].Leak().Leak().fHooked) (kSyscalls[stack->Rcx].Leak().Leak().fProc)(stack); - Kernel::kcout << "newoskrnl.exe: syscall: exit.\r"; + kcout << "syscall: exit.\r"; } } diff --git a/dev/ZKA/KernelKit/DebugOutput.hxx b/dev/ZKA/KernelKit/DebugOutput.hxx index 66105aa1..70f920d1 100644 --- a/dev/ZKA/KernelKit/DebugOutput.hxx +++ b/dev/ZKA/KernelKit/DebugOutput.hxx @@ -59,21 +59,24 @@ namespace Kernel inline TerminalDevice end_line() { TerminalDevice selfTerm = TerminalDevice::The(); - selfTerm << "\r"; + + selfTerm.operator<<("\r"); return selfTerm; } inline TerminalDevice carriage_return() { TerminalDevice selfTerm = TerminalDevice::The(); - selfTerm << "\r"; + + selfTerm.operator<<("\r"); return selfTerm; } inline TerminalDevice tabulate() { TerminalDevice selfTerm = TerminalDevice::The(); - selfTerm << "\t"; + + selfTerm.operator<<("\t"); return selfTerm; } @@ -81,7 +84,8 @@ namespace Kernel inline TerminalDevice bell() { TerminalDevice selfTerm = TerminalDevice::The(); - selfTerm << "\a"; + + selfTerm.operator<<("\a"); return selfTerm; } @@ -111,7 +115,7 @@ namespace Kernel buf[0] = cNumbers[h]; buf[1] = 0; - term << buf; + term.operator<<(buf); return term; } @@ -139,7 +143,7 @@ namespace Kernel buf[0] = cNumbers[h]; buf[1] = 0; - term << buf; + term.operator<<(buf); return term; } } // namespace Detail @@ -148,7 +152,7 @@ namespace Kernel { TerminalDevice selfTerm = TerminalDevice::The(); - selfTerm << "0x"; + selfTerm.operator<<("0x"); Detail::_write_number_hex(x, selfTerm); return selfTerm; @@ -186,5 +190,5 @@ namespace Kernel #undef kcout #endif // ifdef kcout -#define kcout TerminalDevice::The() -#define endl kcout << Kernel::end_line() +#define kcout (Kernel::TerminalDevice::The() << "\e[0;31m [ " << __FILE__ << ": LINE: " << Kernel::number(__LINE__)); (Kernel::TerminalDevice::The() << " ] \e[0m" << ": ") +#define endl Kernel::TerminalDevice::The() << Kernel::end_line() diff --git a/dev/ZKA/KernelKit/DriveMgr.hxx b/dev/ZKA/KernelKit/DriveMgr.hxx index 4b2cdc73..8cec098c 100644 --- a/dev/ZKA/KernelKit/DriveMgr.hxx +++ b/dev/ZKA/KernelKit/DriveMgr.hxx @@ -116,7 +116,7 @@ namespace Kernel return &mD; default: { ErrLocal() = kErrorNoSuchDisk; - kcout << "newoskrnl.exe: No such disk.\n"; + kcout << "No such disk.\n"; break; } diff --git a/dev/ZKA/KernelKit/FileMgr.hxx b/dev/ZKA/KernelKit/FileMgr.hxx index 7a97f821..86c40b69 100644 --- a/dev/ZKA/KernelKit/FileMgr.hxx +++ b/dev/ZKA/KernelKit/FileMgr.hxx @@ -408,7 +408,7 @@ namespace Kernel } } - kcout << "newoskrnl.exe: new file: " << path << ".\r"; + kcout << "new file: " << path << ".\r"; } /// @brief destructor diff --git a/dev/ZKA/NetworkKit/NetworkDevice.inl b/dev/ZKA/NetworkKit/NetworkDevice.inl index 0ae5d9c6..4bc2a153 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.exe: NetworkDevice initialized.\r"; + kcout << "NetworkDevice initialized.\r"; MUST_PASS(out && in && on_cleanup); } @@ -24,7 +24,7 @@ namespace Kernel { MUST_PASS(fCleanup); - kcout << "newoskrnl.exe: NetworkDevice cleanup.\r"; + kcout << "NetworkDevice cleanup.\r"; if (fCleanup) fCleanup(); diff --git a/dev/ZKA/Sources/CodeMgr.cxx b/dev/ZKA/Sources/CodeMgr.cxx index c4ff2ee3..1d4f4a6e 100644 --- a/dev/ZKA/Sources/CodeMgr.cxx +++ b/dev/ZKA/Sources/CodeMgr.cxx @@ -23,7 +23,7 @@ namespace Kernel proc.SetImageStart(reinterpret_cast<VoidPtr>(main)); proc.Kind = UserProcess::kExeKind; - proc.StackSize = kib_cast(4); + proc.StackSize = mib_cast(4); rt_copy_memory((VoidPtr)processName, proc.Name, rt_string_len(processName)); diff --git a/dev/ZKA/Sources/CxxAbi-AMD64.cxx b/dev/ZKA/Sources/CxxAbi-AMD64.cxx index 0b26e9da..908e26f4 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.exe: C++ placeholder method.\n"; + kcout << "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 c11baf72..679be041 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.exe: C++ placeholder method.\n"; + kcout << "C++ placeholder method.\n"; } #endif // ifdef __ZKA_ARM64__ diff --git a/dev/ZKA/Sources/DLLMain.cxx b/dev/ZKA/Sources/DLLMain.cxx index 75fb24ff..db1a80d1 100644 --- a/dev/ZKA/Sources/DLLMain.cxx +++ b/dev/ZKA/Sources/DLLMain.cxx @@ -52,7 +52,7 @@ namespace Kernel::Detail { if (Kernel::FilesystemMgrInterface::GetMounted()) { - CG::CGDrawStringToWnd(cKernelWnd, "newoskrnl.exe: NewFS IFS already mounted by HAL (A:)", 10, 10, RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, "NewFS IFS already mounted by HAL (A:)", 10, 10, RGB(0, 0, 0)); fNewFS = reinterpret_cast<Kernel::NewFilesystemMgr*>(Kernel::FilesystemMgrInterface::GetMounted()); } else @@ -62,7 +62,7 @@ namespace Kernel::Detail Kernel::FilesystemMgrInterface::Mount(fNewFS); - CG::CGDrawStringToWnd(cKernelWnd, "newoskrnl.exe: Mounted NewFS IFS (A:)", 10, 10, RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, "Mounted NewFS IFS (A:)", 10, 10, RGB(0, 0, 0)); } const Kernel::SizeT cDirCount = 7UL; @@ -79,8 +79,8 @@ namespace Kernel::Detail if (catalogDir) { - CG::CGDrawStringToWnd(cKernelWnd, "newoskrnl.exe: Catalog directory already exists: ", 10 + (10 * (dirIndx + 1)), 10, RGB(0, 0, 0)); - CG::CGDrawStringToWnd(cKernelWnd, catalogDir->Name, 10 + (10 * (dirIndx + 1)), 10 + (FONT_SIZE_X * rt_string_len("newoskrnl.exe: Catalog directory already exists: ")), RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, "Catalog directory already exists: ", 10 + (10 * (dirIndx + 1)), 10, RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, catalogDir->Name, 10 + (10 * (dirIndx + 1)), 10 + (FONT_SIZE_X * rt_string_len("Catalog directory already exists: ")), RGB(0, 0, 0)); delete catalogDir; continue; @@ -89,8 +89,8 @@ namespace Kernel::Detail catalogDir = fNewFS->GetParser()->CreateCatalog(cDirStr[dirIndx], 0, kNewFSCatalogKindDir); - CG::CGDrawStringToWnd(cKernelWnd, "newoskrnl.exe: Catalog directory has been created: ", 10 + (10 * (dirIndx + 1)), 10, RGB(0, 0, 0)); - CG::CGDrawStringToWnd(cKernelWnd, catalogDir->Name, 10 + (10 * (dirIndx + 1)), 10 + (FONT_SIZE_X * rt_string_len("newoskrnl.exe: Catalog directory has been created: ")), RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, "Catalog directory has been created: ", 10 + (10 * (dirIndx + 1)), 10, RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, catalogDir->Name, 10 + (10 * (dirIndx + 1)), 10 + (FONT_SIZE_X * rt_string_len("Catalog directory has been created: ")), RGB(0, 0, 0)); delete catalogDir; } @@ -102,15 +102,15 @@ namespace Kernel::Detail if (catalogDisk) { - CG::CGDrawStringToWnd(cKernelWnd, "newoskrnl.exe: Catalog swap file already exists: ", 10 + (10 * (cDirCount + 1)), 10, RGB(0, 0, 0)); - CG::CGDrawStringToWnd(cKernelWnd, kSysPage, 10 + (10 * (cDirCount + 1)), 10 + (FONT_SIZE_X * rt_string_len("newoskrnl.exe: Catalog swap file already exists: ")), RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, "Catalog swap file already exists: ", 10 + (10 * (cDirCount + 1)), 10, RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, kSysPage, 10 + (10 * (cDirCount + 1)), 10 + (FONT_SIZE_X * rt_string_len("Catalog swap file already exists: ")), RGB(0, 0, 0)); delete catalogDisk; } else { - CG::CGDrawStringToWnd(cKernelWnd, "newoskrnl.exe: Catalog swap file created: ", 10 + (10 * (cDirCount + 1)), 10, RGB(0, 0, 0)); - CG::CGDrawStringToWnd(cKernelWnd, kSysPage, 10 + (10 * (cDirCount + 1)), 10 + (FONT_SIZE_X * rt_string_len("newoskrnl.exe: Catalog swap file created: ")), RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, "Catalog swap file created: ", 10 + (10 * (cDirCount + 1)), 10, RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, kSysPage, 10 + (10 * (cDirCount + 1)), 10 + (FONT_SIZE_X * rt_string_len("Catalog swap file created: ")), RGB(0, 0, 0)); catalogDisk = (NFS_CATALOG_STRUCT*)this->Leak()->CreateSwapFile(kSysPage); @@ -184,10 +184,10 @@ EXTERN_C Kernel::Void ke_dll_entrypoint(Kernel::Void) CG::CGDrawWindowList(&cKernelWnd, 1); - CG::CGDrawStringToWnd(cKernelWnd, "newoskrnl.exe: Running System Component: ", 10, 10, RGB(0, 0, 0)); - CG::CGDrawStringToWnd(cKernelWnd, kSysDrv, 10, 10 + (FONT_SIZE_X * Kernel::rt_string_len("newoskrnl.exe: Running System Component: ")), RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, "Running System Component: ", 10, 10, RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, kSysDrv, 10, 10 + (FONT_SIZE_X * Kernel::rt_string_len("Running System Component: ")), RGB(0, 0, 0)); - CG::CGDrawStringToWnd(cKernelWnd, "newoskrnl.exe: Starting ZKA System...", 20, 10, RGB(0, 0, 0)); + CG::CGDrawStringToWnd(cKernelWnd, "Starting ZKA System...", 20, 10, RGB(0, 0, 0)); Kernel::UserProcessHelper::Init(); diff --git a/dev/ZKA/Sources/DriveMgr.cxx b/dev/ZKA/Sources/DriveMgr.cxx index 376eb158..e39c9c33 100644 --- a/dev/ZKA/Sources/DriveMgr.cxx +++ b/dev/ZKA/Sources/DriveMgr.cxx @@ -139,7 +139,7 @@ namespace Kernel trait.fVerify = ke_drv_check_disk; trait.fDriveKind = io_drive_kind; - kcout << "newoskrnl.exe: Construct drive with success.\r"; + kcout << "Construct drive with success.\r"; return trait; } diff --git a/dev/ZKA/Sources/FS/NewFS.cxx b/dev/ZKA/Sources/FS/NewFS.cxx index e3ec6184..37b2a44c 100644 --- a/dev/ZKA/Sources/FS/NewFS.cxx +++ b/dev/ZKA/Sources/FS/NewFS.cxx @@ -67,7 +67,7 @@ _Output NFS_FORK_STRUCT* NewFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* cata Lba lba = (theFork.Kind == kNewFSDataForkKind) ? catalog->DataFork : catalog->ResourceFork; - kcout << "newoskrnl.exe: fork lba: " << hex_number(lba) << endl; + kcout << "fork lba: " << hex_number(lba) << endl; if (lba <= kNewFSCatalogStartAddress) return nullptr; @@ -96,22 +96,22 @@ _Output NFS_FORK_STRUCT* NewFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* cata if (curFork.NextSibling > kBadAddress) { - kcout << "newoskrnl.exe: bad fork: " << hex_number(curFork.NextSibling) << endl; + kcout << "bad fork: " << hex_number(curFork.NextSibling) << endl; break; } - kcout << "newoskrnl.exe: next fork: " << hex_number(curFork.NextSibling) << endl; + kcout << "next fork: " << hex_number(curFork.NextSibling) << endl; if (curFork.Flags == kNewFSFlagCreated) { - kcout << "newoskrnl.exe: fork already exists.\r"; + kcout << "fork already exists.\r"; /// sanity check. if (StringBuilder::Equals(curFork.ForkName, theFork.ForkName) && StringBuilder::Equals(curFork.CatalogName, catalog->Name)) return nullptr; - kcout << "newoskrnl.exe: next fork: " << hex_number(curFork.NextSibling) << endl; + kcout << "next fork: " << hex_number(curFork.NextSibling) << endl; lbaOfPreviousFork = lba; lba = curFork.NextSibling; @@ -153,10 +153,10 @@ _Output NFS_FORK_STRUCT* NewFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* cata drv.fOutput(&drv.fPacket); /// log what we have now. - kcout << "newoskrnl.exe: Wrote fork data at: " << hex_number(theFork.DataOffset) + kcout << "Wrote fork data at: " << hex_number(theFork.DataOffset) << endl; - kcout << "newoskrnl.exe: Wrote fork at: " << hex_number(lba) << endl; + kcout << "Wrote fork at: " << hex_number(lba) << endl; return &theFork; } @@ -241,11 +241,11 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, _Input const Int32& flags, _Input const Int32& kind) { - kcout << "newoskrnl.exe: CreateCatalog(...)\r"; + kcout << "CreateCatalog(...)\r"; Lba out_lba = 0UL; - kcout << "newoskrnl.exe: Checking for extension...\r"; + kcout << "Checking for extension...\r"; /// a directory should have a slash in the end. if (kind == kNewFSCatalogKindDir && @@ -261,7 +261,7 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, if (catalog_copy) { - kcout << "newoskrnl.exe: Catalog already exists: " << name << ".\r"; + kcout << "Catalog already exists: " << name << ".\r"; ErrLocal() = kErrorFileExists; return catalog_copy; @@ -276,7 +276,7 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, if (*parentName == 0) { - kcout << "newoskrnl.exe: Parent name is NUL.\r"; + kcout << "Parent name is NUL.\r"; ErrLocal() = kErrorFileNotFound; return nullptr; } @@ -308,7 +308,7 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, if (catalog && catalog->Kind == kNewFSCatalogKindFile) { - kcout << "newoskrnl.exe: Parent name is file.\r"; + kcout << "Parent name is file.\r"; delete catalog; return nullptr; } @@ -433,9 +433,9 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name, drive.fOutput(&drive.fPacket); - kcout << "newoskrnl.exe: Create new catalog, status: " + kcout << "Create new catalog, status: " << hex_number(catalogChild->Flags) << endl; - kcout << "newoskrnl.exe: Create new catalog, name: " << catalogChild->Name + kcout << "Create new catalog, name: " << catalogChild->Name << endl; delete catalog; @@ -599,14 +599,14 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endL drive->fOutput(&drive->fPacket); - kcout << "newoskrnl.exe: drive kind: " << drive->fDriveKind() << endl; + kcout << "drive kind: " << drive->fDriveKind() << endl; - kcout << "newoskrnl.exe: partition name: " << partBlock->PartitionName << endl; - kcout << "newoskrnl.exe: start: " << hex_number(partBlock->StartCatalog) << endl; - kcout << "newoskrnl.exe: number of catalogs: " << hex_number(partBlock->CatalogCount) << endl; - kcout << "newoskrnl.exe: free catalog: " << hex_number(partBlock->FreeCatalog) << endl; - kcout << "newoskrnl.exe: free sectors: " << hex_number(partBlock->FreeSectors) << endl; - kcout << "newoskrnl.exe: sector size: " << hex_number(partBlock->SectorSize) << endl; + kcout << "partition name: " << partBlock->PartitionName << endl; + kcout << "start: " << hex_number(partBlock->StartCatalog) << endl; + kcout << "number of catalogs: " << hex_number(partBlock->CatalogCount) << endl; + kcout << "free catalog: " << hex_number(partBlock->FreeCatalog) << endl; + kcout << "free sectors: " << hex_number(partBlock->FreeSectors) << endl; + kcout << "sector size: " << hex_number(partBlock->SectorSize) << endl; // write the root catalog. this->CreateCatalog(kNewFSRoot, 0, kNewFSCatalogKindDir); @@ -614,7 +614,7 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endL return true; } - kcout << "newoskrnl.exe: partition block already exists.\r"; + kcout << "partition block already exists.\r"; start += partBlock->DiskSize; @@ -659,7 +659,7 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool { ErrLocal() = kErrorDiskIsCorrupted; - kcout << "newoskrnl.exe: Invalid fork offset.\r"; + kcout << "Invalid fork offset.\r"; return false; } @@ -688,7 +688,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.exe: data offset: " << hex_number(forkDataIn->DataOffset) << endl; + kcout << "data offset: " << hex_number(forkDataIn->DataOffset) << endl; drive.fOutput(&drive.fPacket); @@ -698,7 +698,7 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool drive.fOutput(&drive.fPacket); - kcout << "newoskrnl.exe: wrote fork at offset: " << hex_number(forkDataIn->DataOffset) << endl; + kcout << "wrote fork at offset: " << hex_number(forkDataIn->DataOffset) << endl; delete catalog; @@ -721,7 +721,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.exe: start finding catalog...\r"; + kcout << "start finding catalog...\r"; NFS_ROOT_PARTITION_BLOCK fs_buf{0}; auto drive = sMountpointInterface.A(); @@ -789,7 +789,7 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::FindCatalog(_Input const Char* catalogN } } - kcout << "newoskrnl.exe: fetching catalog...\r"; + kcout << "fetching catalog...\r"; NewFSSearchThroughCatalogList: while (drive.fPacket.fPacketGood) @@ -813,8 +813,8 @@ NewFSSearchThroughCatalogList: NFS_CATALOG_STRUCT* catalogPtr = new NFS_CATALOG_STRUCT(); rt_copy_memory(catalog, catalogPtr, sizeof(NFS_CATALOG_STRUCT)); - kcout << "newoskrnl.exe: found catalog at: " << hex_number(startCatalogList) << endl; - kcout << "newoskrnl.exe: found catalog at: " << catalog->Name << endl; + kcout << "found catalog at: " << hex_number(startCatalogList) << endl; + kcout << "found catalog at: " << catalog->Name << endl; out_lba = startCatalogList; return catalogPtr; @@ -944,7 +944,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.exe: catalog " << catalog->Name + kcout << "catalog " << catalog->Name << ", fork: " << hex_number(dataForkLba) << endl; NFS_FORK_STRUCT* fs_buf = new NFS_FORK_STRUCT(); @@ -965,8 +965,8 @@ VoidPtr NewFSParser::ReadCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, fs_fork_data = fs_buf; - kcout << "newoskrnl.exe: ForkName: " << fs_fork_data->ForkName << endl; - kcout << "newoskrnl.exe: CatalogName: " << fs_fork_data->CatalogName << endl; + kcout << "ForkName: " << fs_fork_data->ForkName << endl; + kcout << "CatalogName: " << fs_fork_data->CatalogName << endl; if (StringBuilder::Equals(forkName, fs_fork_data->ForkName) && StringBuilder::Equals(catalog->Name, fs_fork_data->CatalogName)) @@ -1028,18 +1028,18 @@ namespace Kernel::Detail /***********************************************************************************/ Boolean fs_init_newfs(Void) noexcept { - kcout << "newoskrnl.exe: Creating drives...\r"; + kcout << "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.exe: Testing A:\r"; + kcout << "Testing A:\r"; sMountpointInterface.A().fVerify(&sMountpointInterface.A().fPacket); - kcout << "newoskrnl.exe: Testing A: [ OK ]\r"; + kcout << "Testing A: [ OK ]\r"; return true; } diff --git a/dev/ZKA/Sources/Heap.cxx b/dev/ZKA/Sources/Heap.cxx index 0b54cbcd..1f9af6a2 100644 --- a/dev/ZKA/Sources/Heap.cxx +++ b/dev/ZKA/Sources/Heap.cxx @@ -20,7 +20,7 @@ namespace Kernel { SizeT kHeapCount = 0UL; PageMgr kHeapPageMgr; - Bool kOperationInProgress = No; + Bool kHeapLock = No; /// @brief Contains data structures and algorithms for the heap. namespace Detail @@ -52,12 +52,12 @@ namespace Kernel Void mm_alloc_init_timeout(Void) noexcept { - kOperationInProgress = Yes; + kHeapLock = Yes; } Void mm_alloc_fini_timeout(Void) noexcept { - kOperationInProgress = No; + kHeapLock = No; } } // namespace Detail @@ -111,7 +111,7 @@ namespace Kernel heap_info_ptr->fHeapPtr = reinterpret_cast<UIntPtr>(heap_info_ptr) + sizeof(Detail::HEAP_INFORMATION_BLOCK); heap_info_ptr->fPage = No; heap_info_ptr->fUser = user; - heap_info_ptr->fPresent = No; + heap_info_ptr->fPresent = Yes; ++kHeapCount; @@ -168,6 +168,7 @@ namespace Kernel if (heap_blk && heap_blk->fMagic == kKernelHeapMagic) { + if (!heap_blk->fPresent) { Detail::mm_alloc_fini_timeout(); @@ -196,6 +197,8 @@ namespace Kernel PTEWrapper pageWrapper(false, false, false, reinterpret_cast<UIntPtr>(heap_blk) - sizeof(Detail::HEAP_INFORMATION_BLOCK)); Ref<PTEWrapper> pteAddress{pageWrapper}; + kcout << "Freeing pointer address: " << hex_number(reinterpret_cast<UIntPtr>(heap_blk) - sizeof(Detail::HEAP_INFORMATION_BLOCK)) << endl; + kHeapPageMgr.Free(pteAddress); --kHeapCount; diff --git a/dev/ZKA/Sources/IndexableProperty.cxx b/dev/ZKA/Sources/IndexableProperty.cxx index 84aabc6b..a5f1bc0b 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.exe: filesystem: index new file: " << filename << endl; + kcout << "filesystem: index new file: " << filename << endl; } } } // namespace Indexer diff --git a/dev/ZKA/Sources/KernelCheck.cxx b/dev/ZKA/Sources/KernelCheck.cxx index 0ed96593..acc01dec 100644 --- a/dev/ZKA/Sources/KernelCheck.cxx +++ b/dev/ZKA/Sources/KernelCheck.cxx @@ -99,11 +99,16 @@ namespace Kernel RecoveryFactory::Recover(); break; case RUNTIME_CHECK_UNEXCPECTED: { - CGDrawString("0x0000000B Catasrophic Kernel failure.", start_y, x, panicTxt); + CGDrawString("0x0000000B Unexpected Kernel failure.", start_y, x, panicTxt); + break; + } + case RUNTIME_CHECK_VIRTUAL_OUT_OF_MEM: { + CGDrawString("0x10000001 Out of Virtual Memory. (Catastrophic Failure)", start_y, x, panicTxt); + RecoveryFactory::Recover(); break; } case RUNTIME_CHECK_FAILED: { - CGDrawString("0x10000001 Kernel bug-check failure.", start_y, x, panicTxt); + CGDrawString("0x10000001 Kernel Check.", start_y, x, panicTxt); RecoveryFactory::Recover(); break; } @@ -129,8 +134,8 @@ namespace Kernel { if (!expr) { - kcout << "ASSERTION FAILED: FILE: " << file << endl; - kcout << "ASSERTION FAILED: LINE: " << line << endl; + kcout << "FAILED: FILE: " << file << endl; + kcout << "FAILED: LINE: " << line << endl; ke_stop(RUNTIME_CHECK_FAILED); // Runtime Check failed } diff --git a/dev/ZKA/Sources/NewFS+FileMgr.cxx b/dev/ZKA/Sources/NewFS+FileMgr.cxx index dd0d4a21..1ffa774a 100644 --- a/dev/ZKA/Sources/NewFS+FileMgr.cxx +++ b/dev/ZKA/Sources/NewFS+FileMgr.cxx @@ -21,12 +21,12 @@ namespace Kernel fImpl = new NewFSParser(); MUST_PASS(fImpl); - kcout << "newoskrnl.exe: We are done here... (NewFilesystemMgr).\r"; + kcout << "We are done here... (NewFilesystemMgr).\r"; } NewFilesystemMgr::~NewFilesystemMgr() { - kcout << "newoskrnl.exe: Destroying it...\r"; + kcout << "Destroying it...\r"; if (fImpl) { diff --git a/dev/ZKA/Sources/ThreadLocalStorage.cxx b/dev/ZKA/Sources/ThreadLocalStorage.cxx index e68593f6..35f2dbcd 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.exe: checking for a valid cookie inside the TIB...\r"; + kcout << "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.exe: failing because of an invalid TIB...\r"; + kcout << "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.exe: crashing because of an invalid TIB...\r"; + kcout << "crashing because of an invalid TIB...\r"; return false; } - kcout << "newoskrnl.exe: Verification succeeded! staying alive...\r"; + kcout << "Verification succeeded! staying alive...\r"; return true; } diff --git a/dev/ZKA/Sources/User.cxx b/dev/ZKA/Sources/User.cxx index 5aa688be..066a3e06 100644 --- a/dev/ZKA/Sources/User.cxx +++ b/dev/ZKA/Sources/User.cxx @@ -99,7 +99,7 @@ namespace Kernel delete[] password; password = nullptr; - kcout << "newoskrnl.exe: Saved password...\r"; + kcout << "Saved password...\r"; return true; } diff --git a/dev/ZKA/Sources/UserProcessScheduler.cxx b/dev/ZKA/Sources/UserProcessScheduler.cxx index 7c576226..4d74a5b3 100644 --- a/dev/ZKA/Sources/UserProcessScheduler.cxx +++ b/dev/ZKA/Sources/UserProcessScheduler.cxx @@ -234,10 +234,11 @@ namespace Kernel process.MemoryPD = reinterpret_cast<UIntPtr>(hal_read_cr3()); #endif // __ZKA_AMD64__ - process.StackFrame = (HAL::StackFrame*)process.New(sizeof(HAL::StackFrame)); + process.StackFrame = (HAL::StackFrame*)process.New(sizeof(HAL::StackFrame)); if (!process.StackFrame) { + process.Crash(); return -kErrorProcessFault; } @@ -246,16 +247,16 @@ namespace Kernel { process.DLLPtr = rtl_init_shared_object(&process); } - + if (process.Image) { // get preferred stack size by app. const auto cMaxStackSize = process.StackSize; process.StackReserve = (UInt8*)process.New(sizeof(UInt8) * cMaxStackSize); - // if stack pointer isn't valid. - if (!process.StackReserve) + if (process.StackReserve) { + process.Crash(); return -kErrorProcessFault; } } @@ -296,11 +297,7 @@ namespace Kernel // check if process is within range. if (processSlot > mTeam.AsArray().Count()) return false; - - // also check if the process isn't a dummy one. - if (mTeam.AsArray()[processSlot].Image == nullptr) - return false; - + kcout << "UserProcessScheduler: Removing process...\r"; mTeam.AsArray()[processSlot].Status = ProcessStatusKind::kDead; @@ -427,7 +424,7 @@ namespace Kernel if (!stack || !frame_ptr || !image_ptr || new_pid < 0) return false; - kcout << "newoskrnl.exe: Finding hardware thread...\r"; + kcout << "Finding hardware thread...\r"; for (SizeT index = 0UL; index < HardwareThreadScheduler::The().Count(); ++index) { @@ -446,7 +443,7 @@ namespace Kernel UserProcessHelper::TheCurrentPID() = new_pid; - kcout << "newoskrnl.exe: Found hardware thread...\r"; + kcout << "Found hardware thread...\r"; bool ret = HardwareThreadScheduler::The()[index].Leak()->Switch(image_ptr, stack, frame_ptr); |
