summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-09-05 09:26:46 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-09-05 09:26:46 +0200
commit518e2ce29513b8d49adf73e76aaf94c4f722dfae (patch)
treec123d045f49b215220026cdc8f508f3c3da86eb1
parent1069f411d413e2185f6536b01b8993187056fcd8 (diff)
[ FIX ] Fixed KRNL BMP allocator, which was not working because of badly
formatted heap block. [ IMP ] Improve logger routines [ FILE ] LINE : <LINE> <MSG>. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
-rw-r--r--dev/ZBA/amd64-efi.make2
-rw-r--r--dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx30
-rw-r--r--dev/ZKA/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cxx8
-rw-r--r--dev/ZKA/HALKit/AMD64/HalCoreMPScheduler.cxx8
-rw-r--r--dev/ZKA/HALKit/AMD64/HalKernelMain.cxx2
-rw-r--r--dev/ZKA/HALKit/AMD64/Storage/AHCI.cxx6
-rw-r--r--dev/ZKA/HALKit/AMD64/Storage/ATA-PIO.cxx6
-rw-r--r--dev/ZKA/HALKit/ARM64/HalKernelMain.cxx2
-rw-r--r--dev/ZKA/HALKit/ARM64/Storage/HalFlash.cxx4
-rw-r--r--dev/ZKA/HALKit/AXP/CoreSyscallHandlerDEC.cpp4
-rw-r--r--dev/ZKA/KernelKit/DebugOutput.hxx22
-rw-r--r--dev/ZKA/KernelKit/DriveMgr.hxx2
-rw-r--r--dev/ZKA/KernelKit/FileMgr.hxx2
-rw-r--r--dev/ZKA/NetworkKit/NetworkDevice.inl4
-rw-r--r--dev/ZKA/Sources/CodeMgr.cxx2
-rw-r--r--dev/ZKA/Sources/CxxAbi-AMD64.cxx2
-rw-r--r--dev/ZKA/Sources/CxxAbi-ARM64.cxx2
-rw-r--r--dev/ZKA/Sources/DLLMain.cxx26
-rw-r--r--dev/ZKA/Sources/DriveMgr.cxx2
-rw-r--r--dev/ZKA/Sources/FS/NewFS.cxx70
-rw-r--r--dev/ZKA/Sources/Heap.cxx11
-rw-r--r--dev/ZKA/Sources/IndexableProperty.cxx2
-rw-r--r--dev/ZKA/Sources/KernelCheck.cxx13
-rw-r--r--dev/ZKA/Sources/NewFS+FileMgr.cxx4
-rw-r--r--dev/ZKA/Sources/ThreadLocalStorage.cxx8
-rw-r--r--dev/ZKA/Sources/User.cxx2
-rw-r--r--dev/ZKA/Sources/UserProcessScheduler.cxx19
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);