From 1af5efb5c96af6f3246c8eae42912b2fbcd7f006 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 1 Sep 2024 11:21:55 +0200 Subject: Many bug fixes, and wip fixes. RoadMap: - Ring-3 switch [ Still gives GPF ] - Make timer interrupt on non SMP profile. - Work on SMP support, to offload tasks to other cores. - Validate kernel and components (compiler, dlls, programs...) Signed-off-by: Amlal El Mahrouss --- dev/ZKA/Sources/CxxAbi-AMD64.cxx | 2 +- dev/ZKA/Sources/CxxAbi-ARM64.cxx | 2 +- dev/ZKA/Sources/DLLInterface.cxx | 2 +- dev/ZKA/Sources/DLLMain.cxx | 8 +--- dev/ZKA/Sources/DriveManager.cxx | 2 +- dev/ZKA/Sources/FS/NewFS.cxx | 70 ++++++++++++++++---------------- dev/ZKA/Sources/IndexableProperty.cxx | 2 +- dev/ZKA/Sources/KernelCheck.cxx | 4 +- dev/ZKA/Sources/MP.cxx | 5 ++- dev/ZKA/Sources/NewFS+FileManager.cxx | 4 +- dev/ZKA/Sources/PEFCodeManager.cxx | 2 + dev/ZKA/Sources/ThreadLocalStorage.cxx | 8 ++-- dev/ZKA/Sources/User.cxx | 4 +- dev/ZKA/Sources/UserProcessScheduler.cxx | 8 ++-- 14 files changed, 60 insertions(+), 63 deletions(-) (limited to 'dev/ZKA/Sources') 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); -- cgit v1.2.3