summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-21 20:50:22 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-21 20:50:22 +0100
commit47a0e9b901e9e51b3f0ee5dd30d52ff1a5c8fcc0 (patch)
tree1c2e86bd4313bb40dfa3e70e7e31a8be71bf0c61
parentd5397d2f3be6f3de742736e5d1fdfc3121879f70 (diff)
IMP: Compile using -Wall and scheduler improvements.
-rw-r--r--dev/Modules/FB/WS.h55
-rw-r--r--dev/ZBAKit/BootKit/Thread.h8
-rw-r--r--dev/ZBAKit/amd64-efi.make2
-rw-r--r--dev/ZBAKit/src/BootThread.cc2
-rw-r--r--dev/ZKAKit/FSKit/NeFS.h2
-rw-r--r--dev/ZKAKit/FirmwareKit/CoreBoot/CoreBoot.h4
-rw-r--r--dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc20
-rw-r--r--dev/ZKAKit/HALKit/AMD64/HalCoreMPScheduler.cc9
-rw-r--r--dev/ZKAKit/HALKit/AMD64/Storage/AHCI-DMA.cc2
-rw-r--r--dev/ZKAKit/HALKit/ARM64/HalDebugOutput.cc2
-rw-r--r--dev/ZKAKit/KernelKit/DeviceMgr.h4
-rw-r--r--dev/ZKAKit/KernelKit/DriveMgr.h30
-rw-r--r--dev/ZKAKit/KernelKit/FileMgr.h4
-rw-r--r--dev/ZKAKit/KernelKit/LPC.h4
-rw-r--r--dev/ZKAKit/KernelKit/UserProcessScheduler.h17
-rw-r--r--dev/ZKAKit/NetworkKit/IPC.h4
-rw-r--r--dev/ZKAKit/NewKit/Macros.h8
-rw-r--r--dev/ZKAKit/NewKit/PageMgr.h2
-rw-r--r--dev/ZKAKit/amd64-efi.make2
-rw-r--r--dev/ZKAKit/src/CodeMgr.cc8
-rw-r--r--dev/ZKAKit/src/DriveMgr.cc8
-rw-r--r--dev/ZKAKit/src/FS/NeFS.cc46
-rw-r--r--dev/ZKAKit/src/NeFS+FileMgr.cc2
-rw-r--r--dev/ZKAKit/src/PEFCodeMgr.cc4
-rw-r--r--dev/ZKAKit/src/UserProcessScheduler.cc41
25 files changed, 147 insertions, 143 deletions
diff --git a/dev/Modules/FB/WS.h b/dev/Modules/FB/WS.h
index 5155ab94..cfca3626 100644
--- a/dev/Modules/FB/WS.h
+++ b/dev/Modules/FB/WS.h
@@ -16,43 +16,42 @@
namespace WS
{
- using namespace Kernel;
+ using namespace Kernel;
- struct WSWindowContainer;
+ struct WSWindowContainer;
- typedef UInt32* WSBackBufferKind;
+ typedef UInt32* WSBackBufferKind;
- class WSWindowContainer final
- {
- public:
- WSWindowContainer() = default;
- ~WSWindowContainer() = default;
+ class WSWindowContainer final
+ {
+ public:
+ WSWindowContainer() = default;
+ ~WSWindowContainer() = default;
- ZKA_COPY_DEFAULT(WSWindowContainer);
+ ZKA_COPY_DEFAULT(WSWindowContainer);
- /// @note the trick is, it could be GPU processed data, that's the cool thing.
- BOOL PopulateWindow(WSBackBufferKind contents_buf, SizeT contents_len)
- {
- if (contents_len > BackBufferLength)
- return NO;
+ /// @note the trick is, it could be GPU processed data, that's the cool thing.
+ BOOL PopulateWindow(WSBackBufferKind contents_buf, SizeT contents_len)
+ {
+ if (contents_len > BackBufferLength)
+ return NO;
- if (!contents_buf)
- return NO;
+ if (!contents_buf)
+ return NO;
- if (!BackBuffer ||
- !BackBufferLength)
- return NO;
+ if (!BackBuffer ||
+ !BackBufferLength)
+ return NO;
- rt_copy_memory(contents_buf, BackBuffer, contents_len);
- return YES;
- }
+ rt_copy_memory(contents_buf, BackBuffer, contents_len);
+ return YES;
+ }
- public:
- WSBackBufferKind BackBuffer{nullptr};
- SizeT BackBufferLength{0UL};
-
- };
-}
+ public:
+ WSBackBufferKind BackBuffer{nullptr};
+ SizeT BackBufferLength{0UL};
+ };
+} // namespace WS
#define rtl_allocate_backbuffer(width, height) new WS::WSBackBufferKind[width * height]
#define rtl_compute_fb_geometry(width, height) (width * height)
diff --git a/dev/ZBAKit/BootKit/Thread.h b/dev/ZBAKit/BootKit/Thread.h
index 4a785ebf..387da80d 100644
--- a/dev/ZBAKit/BootKit/Thread.h
+++ b/dev/ZBAKit/BootKit/Thread.h
@@ -35,10 +35,10 @@ namespace Boot
bool IsValid();
private:
- Char fBlobName[255] = {"BootThread"};
- VoidPtr fStartAddress{nullptr};
- VoidPtr fBlob{nullptr};
- UInt8* fStack{nullptr};
+ Char fBlobName[255] = {"BootThread"};
+ VoidPtr fStartAddress{nullptr};
+ VoidPtr fBlob{nullptr};
+ UInt8* fStack{nullptr};
HEL::BootInfoHeader* fHandover{nullptr};
};
} // namespace Boot
diff --git a/dev/ZBAKit/amd64-efi.make b/dev/ZBAKit/amd64-efi.make
index 97111325..e91cf494 100644
--- a/dev/ZBAKit/amd64-efi.make
+++ b/dev/ZBAKit/amd64-efi.make
@@ -45,7 +45,7 @@ REM_FLAG=-f
FLAG_ASM=-f win64
FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mno-red-zone -D__NEWOSKRNL__ -D__NEWOSLDR__ \
-DEFI_FUNCTION_WRAPPER -I./ -I../ZKAKit -I../ -c -nostdlib -fno-rtti -fno-exceptions \
- -std=c++20 -D__HAVE_ZKA_APIS__ -DZBA_USE_FB -D__ZKA_AMD64__ -D__ZKA__ -DZKA_AUTO_FORMAT
+ -std=c++20 -D__HAVE_ZKA_APIS__ -DZBA_USE_FB -D__ZKA_AMD64__ -D__ZKA__ -DZKA_AUTO_FORMAT -Wall
BOOTLOADER=zbaosldr.exe
KERNEL=minoskrnl.exe
diff --git a/dev/ZBAKit/src/BootThread.cc b/dev/ZBAKit/src/BootThread.cc
index e92a04f5..a0ea6914 100644
--- a/dev/ZBAKit/src/BootThread.cc
+++ b/dev/ZBAKit/src/BootThread.cc
@@ -185,7 +185,7 @@ namespace Boot
rt_jump_to_address(fStartAddress, fHandover, &fStack[mib_cast(8) - 1]);
else
{
- delete [] fStack;
+ delete[] fStack;
reinterpret_cast<HEL::HandoverProc>(fStartAddress)(fHandover);
}
}
diff --git a/dev/ZKAKit/FSKit/NeFS.h b/dev/ZKAKit/FSKit/NeFS.h
index 53367940..867b2690 100644
--- a/dev/ZKAKit/FSKit/NeFS.h
+++ b/dev/ZKAKit/FSKit/NeFS.h
@@ -33,7 +33,7 @@ default.
#define kNeFSMinimumDiskSize (gib_cast(4))
#define kNeFSSectorSz (512)
-#define kNeFSForkDataSz (mib_cast(4))
+#define kNeFSForkDataSz (mib_cast(16))
#define kNeFSIdentLen (8)
#define kNeFSIdent " NeFS"
diff --git a/dev/ZKAKit/FirmwareKit/CoreBoot/CoreBoot.h b/dev/ZKAKit/FirmwareKit/CoreBoot/CoreBoot.h
index d1c83c64..d3792949 100644
--- a/dev/ZKAKit/FirmwareKit/CoreBoot/CoreBoot.h
+++ b/dev/ZKAKit/FirmwareKit/CoreBoot/CoreBoot.h
@@ -20,8 +20,8 @@ namespace Kernel
const UInt32 fStartAddress; // start address (master/slave(s) thread)
#ifdef ZKA_IS_EXTENDED_COREBOOT
- const UIntPtr fMasterStructure; // master structure for MP/PM and device tree and such (ARM)
- const UIntPtr fMasterStructureVersion; // master structure version.
+ const UIntPtr fMasterStructure; // master structure for MP/PM and device tree and such (ARM)
+ const UIntPtr fMasterStructureVersion; // master structure version.
#endif
};
} // namespace Kernel \ No newline at end of file
diff --git a/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
index f86276a0..b75f37ce 100644
--- a/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
+++ b/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
@@ -27,8 +27,8 @@ EXTERN_C void idt_handle_pf(Kernel::UIntPtr rsp)
auto process = Kernel::UserProcessScheduler::The().GetCurrentProcess();
- process.Leak().ProcessSignal.SignalIP = 0UL;
- process.Leak().ProcessSignal.SignalID = SIGKILL;
+ process.Leak().ProcessSignal.SignalIP = 0UL;
+ process.Leak().ProcessSignal.SignalID = SIGKILL;
process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status;
kcout << "Kernel: PRCFROZE status set..\r";
@@ -53,8 +53,8 @@ EXTERN_C void idt_handle_math(Kernel::UIntPtr rsp)
auto process = Kernel::UserProcessScheduler::The().GetCurrentProcess();
- process.Leak().ProcessSignal.SignalIP = 0UL;
- process.Leak().ProcessSignal.SignalID = SIGKILL;
+ process.Leak().ProcessSignal.SignalIP = 0UL;
+ process.Leak().ProcessSignal.SignalID = SIGKILL;
process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status;
kcout << "Kernel: PRCFROZE status set..\r";
@@ -72,8 +72,8 @@ EXTERN_C void idt_handle_generic(Kernel::UIntPtr rsp)
auto process = Kernel::UserProcessScheduler::The().GetCurrentProcess();
- process.Leak().ProcessSignal.SignalIP = 0UL;
- process.Leak().ProcessSignal.SignalID = SIGKILL;
+ process.Leak().ProcessSignal.SignalIP = 0UL;
+ process.Leak().ProcessSignal.SignalID = SIGKILL;
process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status;
kcout << "Kernel: PRCFROZE status set..\r";
@@ -92,8 +92,8 @@ EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip)
kcout << "Kernel: SIGTRAP set.\r";
- process.Leak().ProcessSignal.SignalIP = rip;
- process.Leak().ProcessSignal.SignalID = SIGTRAP;
+ process.Leak().ProcessSignal.SignalIP = rip;
+ process.Leak().ProcessSignal.SignalID = SIGTRAP;
process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status;
kcout << "Kernel: PRCFROZE status set..\r";
@@ -109,8 +109,8 @@ EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp)
auto process = Kernel::UserProcessScheduler::The().GetCurrentProcess();
- process.Leak().ProcessSignal.SignalIP = 0UL;
- process.Leak().ProcessSignal.SignalID = SIGKILL;
+ process.Leak().ProcessSignal.SignalIP = 0UL;
+ process.Leak().ProcessSignal.SignalID = SIGKILL;
process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status;
kcout << "Kernel: PRCFROZE status set..\r";
diff --git a/dev/ZKAKit/HALKit/AMD64/HalCoreMPScheduler.cc b/dev/ZKAKit/HALKit/AMD64/HalCoreMPScheduler.cc
index bf8f90ec..85cfd183 100644
--- a/dev/ZKAKit/HALKit/AMD64/HalCoreMPScheduler.cc
+++ b/dev/ZKAKit/HALKit/AMD64/HalCoreMPScheduler.cc
@@ -48,9 +48,9 @@ namespace Kernel::HAL
STATIC Bool kSMPAware = false;
STATIC Int64 kSMPCount = 0;
- STATIC Int32 cSMPInterrupt = 0;
+ STATIC Int32 cSMPInterrupt = 0;
STATIC UInt64 kAPICLocales[cSMPMax] = {0};
- STATIC VoidPtr kRawMADT = nullptr;
+ STATIC VoidPtr kRawMADT = nullptr;
/// @brief Multiple APIC Descriptor Table.
struct MADT_TABLE final : public SDT
@@ -168,7 +168,10 @@ namespace Kernel::HAL
/// @brief Is the current config SMP aware?
/// @return True if YES, False if not.
/***********************************************************************************/
- Bool mp_is_smp(Void) noexcept { return kSMPAware; }
+ Bool mp_is_smp(Void) noexcept
+ {
+ return kSMPAware;
+ }
/***********************************************************************************/
/// @brief Fetch and enable SMP scheduler.
diff --git a/dev/ZKAKit/HALKit/AMD64/Storage/AHCI-DMA.cc b/dev/ZKAKit/HALKit/AMD64/Storage/AHCI-DMA.cc
index 3c9ce1b8..94b21960 100644
--- a/dev/ZKAKit/HALKit/AMD64/Storage/AHCI-DMA.cc
+++ b/dev/ZKAKit/HALKit/AMD64/Storage/AHCI-DMA.cc
@@ -25,7 +25,7 @@
#define AHCI_START_ADDRESS mib_cast(4) // 4M
-#define HBA_ERR_TFE (1 << 30)
+#define HBA_ERR_TFE (1 << 30)
#define HBA_PxCMD_ST 0x0001
#define HBA_PxCMD_FRE 0x0010
#define HBA_PxCMD_FR 0x4000
diff --git a/dev/ZKAKit/HALKit/ARM64/HalDebugOutput.cc b/dev/ZKAKit/HALKit/ARM64/HalDebugOutput.cc
index caf04018..e2b2db88 100644
--- a/dev/ZKAKit/HALKit/ARM64/HalDebugOutput.cc
+++ b/dev/ZKAKit/HALKit/ARM64/HalDebugOutput.cc
@@ -37,7 +37,7 @@ namespace Kernel
}
TerminalDevice::~TerminalDevice() = default;
-
+
EXTERN_C void ke_io_read(const Char* bytes)
{
#ifdef __DEBUG__
diff --git a/dev/ZKAKit/KernelKit/DeviceMgr.h b/dev/ZKAKit/KernelKit/DeviceMgr.h
index 57ecab3a..1b60c998 100644
--- a/dev/ZKAKit/KernelKit/DeviceMgr.h
+++ b/dev/ZKAKit/KernelKit/DeviceMgr.h
@@ -41,7 +41,9 @@ namespace Kernel
{
public:
explicit IDeviceObject(void (*Out)(T), void (*In)(T))
- : fOut(Out), fIn(In) {}
+ : fOut(Out), fIn(In)
+ {
+ }
virtual ~IDeviceObject() = default;
diff --git a/dev/ZKAKit/KernelKit/DriveMgr.h b/dev/ZKAKit/KernelKit/DriveMgr.h
index 5cc0571e..87f3a5e2 100644
--- a/dev/ZKAKit/KernelKit/DriveMgr.h
+++ b/dev/ZKAKit/KernelKit/DriveMgr.h
@@ -16,10 +16,10 @@
#include <NewKit/KString.h>
#include <NewKit/Ref.h>
-#define kDriveMaxCount (4U)
-#define kDriveSectorSz (512U)
-#define kDriveInvalidID (-1)
-#define kDriveNameLen (32)
+#define kDriveMaxCount (4U)
+#define kDriveSectorSz (512U)
+#define kDriveInvalidID (-1)
+#define kDriveNameLen (32)
#define drv_sector_cnt(SIZE, SECTOR_SZ) (((SIZE) + (SECTOR_SZ)) / (SECTOR_SZ))
@@ -30,14 +30,14 @@ namespace Kernel
kInvalidDisc = -1,
/// Storage types, combine with flags.
- kBlockDevice = 0xAD,
+ kBlockDevice = 0xAD,
kMassStorageDisc = 0xDA,
- kFloppyDisc = 0xCD,
- kOpticalDisc = 0xDC, // CD-ROM/DVD-ROM/Blu-Ray
- kTapeDisc = 0xD7,
+ kFloppyDisc = 0xCD,
+ kOpticalDisc = 0xDC, // CD-ROM/DVD-ROM/Blu-Ray
+ kTapeDisc = 0xD7,
/// Storage flags, combine with types.
- kReadOnlyDrive = 0x10, // Read only drive
+ kReadOnlyDrive = 0x10, // Read only drive
kEPMDrive = 0x11, // Explicit Partition Map.
kEPTDrive = 0x12, // ESP w/ EPM partition.
kMBRDrive = 0x13, // PC classic partition scheme
@@ -49,17 +49,17 @@ namespace Kernel
/// @brief Media drive trait type.
struct DriveTrait final
{
- Char fName[kDriveNameLen]; // /System, /Boot, //./Devices/USB...
- Int32 fKind; // fMassStorage, fFloppy, fOpticalDisc.
- Int32 fFlags; // fReadOnly, fXPMDrive, fXPTDrive
+ Char fName[kDriveNameLen]; // /System, /Boot, //./Devices/USB...
+ Int32 fKind; // fMassStorage, fFloppy, fOpticalDisc.
+ Int32 fFlags; // fReadOnly, fXPMDrive, fXPTDrive
/// @brief Packet drive (StorageKit compilant.)
struct DrivePacket final
{
- VoidPtr fPacketContent{nullptr}; //! packet body.
+ VoidPtr fPacketContent{nullptr}; //! packet body.
Char fPacketMime[kDriveNameLen] = "*/*"; //! identify what we're sending.
- SizeT fPacketSize{0UL}; //! packet size
- UInt32 fPacketCRC32{0UL}; //! sanity crc, in case if good is set to false
+ SizeT fPacketSize{0UL}; //! packet size
+ UInt32 fPacketCRC32{0UL}; //! sanity crc, in case if good is set to false
Boolean fPacketGood{YES};
Lba fPacketLba{0UL};
Boolean fPacketReadOnly{NO};
diff --git a/dev/ZKAKit/KernelKit/FileMgr.h b/dev/ZKAKit/KernelKit/FileMgr.h
index a466f763..f8a9c268 100644
--- a/dev/ZKAKit/KernelKit/FileMgr.h
+++ b/dev/ZKAKit/KernelKit/FileMgr.h
@@ -377,10 +377,10 @@ namespace Kernel
/// @brief constructor
template <typename Encoding, typename Class>
inline FileStream<Encoding, Class>::FileStream(const Encoding* path,
- const Encoding* restrict_type)
+ const Encoding* restrict_type)
: fFile(Class::GetMounted()->Open(path, restrict_type))
{
- const SizeT kRestrictCount = kRestrictMax;
+ const SizeT kRestrictCount = kRestrictMax;
const FileRestrictKind kRestrictList[] = {
{
.fRestrict = kRestrictR,
diff --git a/dev/ZKAKit/KernelKit/LPC.h b/dev/ZKAKit/KernelKit/LPC.h
index 66fd3a4d..1bb30e91 100644
--- a/dev/ZKAKit/KernelKit/LPC.h
+++ b/dev/ZKAKit/KernelKit/LPC.h
@@ -15,9 +15,9 @@
#define ErrLocalFailed() (Kernel::UserProcessScheduler::The().GetCurrentProcess().Leak().GetLocalCode() != Kernel::kErrorSuccess)
#define ErrLocal() (Kernel::UserProcessScheduler::The().GetCurrentProcess().Leak().GetLocalCode())
-#define ErrGlobalIsOk() (Kernel::kErrorLocalNumber == Kernel::kErrorSuccess)
+#define ErrGlobalIsOk() (Kernel::kErrorLocalNumber == Kernel::kErrorSuccess)
#define ErrGlobalFailed() (Kernel::kErrorLocalNumber != Kernel::kErrorSuccess)
-#define ErrGlobal() (Kernel::kErrorLocalNumber)
+#define ErrGlobal() (Kernel::kErrorLocalNumber)
namespace Kernel
{
diff --git a/dev/ZKAKit/KernelKit/UserProcessScheduler.h b/dev/ZKAKit/KernelKit/UserProcessScheduler.h
index 2ffb27c0..dc96010e 100644
--- a/dev/ZKAKit/KernelKit/UserProcessScheduler.h
+++ b/dev/ZKAKit/KernelKit/UserProcessScheduler.h
@@ -39,7 +39,7 @@ namespace Kernel
typedef Int64 ProcessID;
//! @brief Local Process name length.
- inline constexpr SizeT kProcessNameLen = 128U;
+ inline constexpr SizeT kProcessNameLen = 128U;
inline constexpr ProcessID kProcessInvalidID = -1;
//! @brief Local Process status enum.
@@ -50,7 +50,8 @@ namespace Kernel
kRunning,
kKilled,
kFrozen,
- kDead,
+ KFinishing,
+ kFinished,
kCount,
};
@@ -131,7 +132,7 @@ namespace Kernel
{
ImagePtr fCode;
ImagePtr fBlob;
-
+
operator bool()
{
return this->fCode;
@@ -161,11 +162,11 @@ namespace Kernel
User* Owner{nullptr};
HAL::StackFramePtr StackFrame{nullptr};
AffinityKind Affinity{AffinityKind::kStandard};
- ProcessStatusKind Status{ProcessStatusKind::kDead};
+ ProcessStatusKind Status{ProcessStatusKind::kFinished};
UInt8* StackReserve{nullptr};
UserProcessImage Image;
SizeT StackSize{kSchedMaxStackSz};
- IDLLObject* PefDLLDelegate{nullptr};
+ IDLLObject* PefDLLDelegate{nullptr};
SizeT MemoryCursor{0};
SizeT MemoryLimit{kSchedMaxMemoryLimit};
@@ -181,12 +182,12 @@ namespace Kernel
struct UserProcessSignal final
{
- UIntPtr SignalIP;
+ UIntPtr SignalIP;
ProcessStatusKind PreviousStatus;
- UIntPtr SignalID;
+ UIntPtr SignalID;
};
- UserProcessSignal ProcessSignal;
+ UserProcessSignal ProcessSignal;
UserProcessHeapList* MemoryHeap{nullptr};
VoidPtr VMRegister{0UL};
diff --git a/dev/ZKAKit/NetworkKit/IPC.h b/dev/ZKAKit/NetworkKit/IPC.h
index 74056598..a86b5393 100644
--- a/dev/ZKAKit/NetworkKit/IPC.h
+++ b/dev/ZKAKit/NetworkKit/IPC.h
@@ -57,8 +57,8 @@ namespace Kernel
enum
{
kIPCLittleEndian = 0,
- kIPCBigEndian = 1,
- kIPCMixedEndian = 2,
+ kIPCBigEndian = 1,
+ kIPCMixedEndian = 2,
};
constexpr inline auto kIPCMsgSize = 6094U;
diff --git a/dev/ZKAKit/NewKit/Macros.h b/dev/ZKAKit/NewKit/Macros.h
index ff59a0a2..5628b3ee 100644
--- a/dev/ZKAKit/NewKit/Macros.h
+++ b/dev/ZKAKit/NewKit/Macros.h
@@ -120,7 +120,7 @@
#define RGB(R, G, B) (Kernel::UInt32)(R | G << 0x8 | B << 0x10)
#endif // !RGB
-#define BREAK_POINT() asm volatile ("int $3")
+#define BREAK_POINT() asm volatile("int $3")
/// @brief The system page file, located on the mount directory, as mulitple system pages can be mounted.
#define kPageSys "/Disks/syspage.sys"
@@ -140,7 +140,7 @@
/// @brief The main system loader.
#define kUserName "ZKA AUTHORITY/KERNEL"
-#define rtl_deduce_endianess(address, value) \
+#define rtl_deduce_endianess(address, value) \
(((reinterpret_cast<Kernel::Char*>(address)[0]) == (value)) \
? (Kernel::Endian::kEndianBig) \
: (Kernel::Endian::kEndianLittle))
@@ -149,9 +149,9 @@
#define No false
#define YES true
-#define NO false
+#define NO false
-#define TRUE true
+#define TRUE true
#define FALSE false
#define BOOL Kernel::Boolean
diff --git a/dev/ZKAKit/NewKit/PageMgr.h b/dev/ZKAKit/NewKit/PageMgr.h
index 2f83b13b..f12aa875 100644
--- a/dev/ZKAKit/NewKit/PageMgr.h
+++ b/dev/ZKAKit/NewKit/PageMgr.h
@@ -29,7 +29,7 @@ namespace Kernel
public:
const UIntPtr VirtualAddress();
- Void NoExecute(const bool enable = false);
+ Void NoExecute(const bool enable = false);
Bool NoExecute();
operator bool()
diff --git a/dev/ZKAKit/amd64-efi.make b/dev/ZKAKit/amd64-efi.make
index a87a1dcd..06677717 100644
--- a/dev/ZKAKit/amd64-efi.make
+++ b/dev/ZKAKit/amd64-efi.make
@@ -7,7 +7,7 @@ CC = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-ld
CCFLAGS = -fshort-wchar -c -D__ZKA_AMD64__ -mno-red-zone -fno-rtti -fno-exceptions \
-std=c++20 -D__ZKA_SUPPORT_NX__ -O0 -I../Vendor -D__FSKIT_INCLUDES_NEFS__ \
- -D__NEWOSKRNL__ -D__HAVE_ZKA_APIS__ -D__FREESTANDING__ -D__ZKA__ -I./ -I../ -I../zba
+ -D__NEWOSKRNL__ -D__HAVE_ZKA_APIS__ -D__FREESTANDING__ -D__ZKA__ -I./ -I../ -I../zba -Wall
ASM = nasm
diff --git a/dev/ZKAKit/src/CodeMgr.cc b/dev/ZKAKit/src/CodeMgr.cc
index c7d1843a..0133d653 100644
--- a/dev/ZKAKit/src/CodeMgr.cc
+++ b/dev/ZKAKit/src/CodeMgr.cc
@@ -18,14 +18,14 @@ namespace Kernel
{
if (!main ||
!process_name ||
- *process_name == 0)
+ *process_name == 0)
return kProcessInvalidID;
UserProcess* process_hdr = new UserProcess();
- process_hdr->Image.fCode = reinterpret_cast<VoidPtr>(main);
- process_hdr->Kind = UserProcess::kExectuableKind;
- process_hdr->StackSize = kib_cast(16);
+ process_hdr->Image.fCode = reinterpret_cast<VoidPtr>(main);
+ process_hdr->Kind = UserProcess::kExectuableKind;
+ process_hdr->StackSize = kib_cast(16);
rt_set_memory(process_hdr->Name, 0, kProcessNameLen);
diff --git a/dev/ZKAKit/src/DriveMgr.cc b/dev/ZKAKit/src/DriveMgr.cc
index 462e037c..8db3bd67 100644
--- a/dev/ZKAKit/src/DriveMgr.cc
+++ b/dev/ZKAKit/src/DriveMgr.cc
@@ -160,7 +160,7 @@ namespace Kernel
{
static _BOOT_BLOCK_STRUCT block_struct;
- trait->fPacket.fPacketLba = kEPMBaseLba;
+ trait->fPacket.fPacketLba = kEPMBaseLba;
trait->fPacket.fPacketSize = sizeof(_BOOT_BLOCK_STRUCT);
trait->fPacket.fPacketContent = &block_struct;
@@ -174,13 +174,13 @@ namespace Kernel
if (rt_string_cmp(((BOOT_BLOCK_STRUCT*)trait->fPacket.fPacketContent)->Magic, kEPMMagic, kEPMMagicLength) == 0)
{
trait->fPacket.fPacketReadOnly = NO;
- trait->fKind = kMassStorageDisc | kEPMDrive;
+ trait->fKind = kMassStorageDisc | kEPMDrive;
kcout << "Formatted Disc is EPM (Mass Storage).\r";
}
else
{
trait->fPacket.fPacketReadOnly = YES;
- trait->fKind = kMassStorageDisc | kUnformattedDrive | kReadOnlyDrive;
+ trait->fKind = kMassStorageDisc | kUnformattedDrive | kReadOnlyDrive;
kcout << "Scheme Found: " << block_struct.Name << endl;
if (block_struct.Name[0] == 0)
@@ -190,7 +190,7 @@ namespace Kernel
rt_copy_memory((VoidPtr) "*/*", trait->fPacket.fPacketMime,
rt_string_len("*/*"));
- trait->fPacket.fPacketLba = 0;
+ trait->fPacket.fPacketLba = 0;
trait->fPacket.fPacketSize = 0UL;
trait->fPacket.fPacketContent = nullptr;
}
diff --git a/dev/ZKAKit/src/FS/NeFS.cc b/dev/ZKAKit/src/FS/NeFS.cc
index 4d2f29aa..b73b6be6 100644
--- a/dev/ZKAKit/src/FS/NeFS.cc
+++ b/dev/ZKAKit/src/FS/NeFS.cc
@@ -90,7 +90,7 @@ _Output NFS_FORK_STRUCT* NeFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* catal
if (lba <= kNeFSCatalogStartAddress)
break;
- drv.fPacket.fPacketLba = lba;
+ drv.fPacket.fPacketLba = lba;
drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
drv.fPacket.fPacketContent = &curFork;
@@ -126,7 +126,7 @@ _Output NFS_FORK_STRUCT* NeFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* catal
/// entry.
if (lba >= kNeFSCatalogStartAddress)
{
- drv.fPacket.fPacketLba = lbaOfPreviousFork;
+ drv.fPacket.fPacketLba = lbaOfPreviousFork;
drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
drv.fPacket.fPacketContent = &prevFork;
@@ -145,7 +145,7 @@ _Output NFS_FORK_STRUCT* NeFSParser::CreateFork(_Input NFS_CATALOG_STRUCT* catal
the_fork.PreviousSibling = lbaOfPreviousFork;
the_fork.NextSibling = the_fork.DataOffset - the_fork.DataSize - sizeof(NFS_FORK_STRUCT);
- drv.fPacket.fPacketLba = lba;
+ drv.fPacket.fPacketLba = lba;
drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
drv.fPacket.fPacketContent = &the_fork;
@@ -180,7 +180,7 @@ _Output NFS_FORK_STRUCT* NeFSParser::FindFork(_Input NFS_CATALOG_STRUCT* catalog
while (lba != 0)
{
- drv.fPacket.fPacketLba = lba;
+ drv.fPacket.fPacketLba = lba;
drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
drv.fPacket.fPacketContent = (VoidPtr)the_fork;
@@ -317,7 +317,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::CreateCatalog(_Input const Char* name,
drive.fPacket.fPacketContent = sectorBufPartBlock;
drive.fPacket.fPacketSize = kNeFSSectorSz;
- drive.fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
+ drive.fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
drive.fInput(&drive.fPacket);
@@ -353,7 +353,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::CreateCatalog(_Input const Char* name,
drive.fPacket.fPacketContent = &temporary_catalog;
drive.fPacket.fPacketSize = kNeFSSectorSz;
- drive.fPacket.fPacketLba = start_free;
+ drive.fPacket.fPacketLba = start_free;
drive.fInput(&drive.fPacket);
@@ -387,7 +387,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::CreateCatalog(_Input const Char* name,
drive.fPacket.fPacketContent = sectorBufPartBlock;
drive.fPacket.fPacketSize = kNeFSSectorSz;
- drive.fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
+ drive.fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
drive.fInput(&drive.fPacket);
@@ -414,7 +414,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::CreateCatalog(_Input const Char* name,
drive.fPacket.fPacketContent = child_catalog;
drive.fPacket.fPacketSize = sizeof(NFS_CATALOG_STRUCT);
- drive.fPacket.fPacketLba = start_free;
+ drive.fPacket.fPacketLba = start_free;
drive.fOutput(&drive.fPacket);
@@ -422,7 +422,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::CreateCatalog(_Input const Char* name,
drive.fPacket.fPacketContent = sectorBufPartBlock;
drive.fPacket.fPacketSize = kNeFSSectorSz;
- drive.fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
+ drive.fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
drive.fInput(&drive.fPacket);
@@ -453,7 +453,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::CreateCatalog(_Input const Char* name,
drive.fPacket.fPacketContent = &temporary_catalog;
drive.fPacket.fPacketSize = kNeFSSectorSz;
- drive.fPacket.fPacketLba = start_free;
+ drive.fPacket.fPacketLba = start_free;
drive.fInput(&drive.fPacket);
}
@@ -490,7 +490,7 @@ bool NeFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLb
drive->fPacket.fPacketContent = fs_buf;
drive->fPacket.fPacketSize = kNeFSSectorSz;
- drive->fPacket.fPacketLba = start;
+ drive->fPacket.fPacketLba = start;
drive->fInput(&drive->fPacket);
@@ -526,7 +526,7 @@ bool NeFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLb
{
drive->fPacket.fPacketContent = buf;
drive->fPacket.fPacketSize = kNeFSSectorSz;
- drive->fPacket.fPacketLba = outEpmLba;
+ drive->fPacket.fPacketLba = outEpmLba;
drive->fInput(&drive->fPacket);
@@ -542,7 +542,7 @@ bool NeFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLb
drive->fPacket.fPacketContent = bufEpmHdr;
drive->fPacket.fPacketSize = kNeFSSectorSz;
- drive->fPacket.fPacketLba = outEpmLba;
+ drive->fPacket.fPacketLba = outEpmLba;
drive->fOutput(&drive->fPacket);
@@ -594,7 +594,7 @@ bool NeFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLb
drive->fPacket.fPacketContent = fs_buf;
drive->fPacket.fPacketSize = kNeFSSectorSz;
- drive->fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
+ drive->fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
drive->fOutput(&drive->fPacket);
@@ -619,7 +619,7 @@ bool NeFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLb
drive->fPacket.fPacketContent = fs_buf;
drive->fPacket.fPacketSize = kNeFSSectorSz;
- drive->fPacket.fPacketLba = start;
+ drive->fPacket.fPacketLba = start;
drive->fInput(&drive->fPacket);
}
@@ -658,7 +658,7 @@ bool NeFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool i
{
drive.fPacket.fPacketContent = fork_data_input;
drive.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drive.fPacket.fPacketLba = startFork;
+ drive.fPacket.fPacketLba = startFork;
drive.fInput(&drive.fPacket);
@@ -686,7 +686,7 @@ bool NeFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool i
drive.fPacket.fPacketContent = buf;
drive.fPacket.fPacketSize = kNeFSForkDataSz;
- drive.fPacket.fPacketLba = fork_data_input->DataOffset;
+ drive.fPacket.fPacketLba = fork_data_input->DataOffset;
kcout << "data offset: " << hex_number(fork_data_input->DataOffset) << endl;
@@ -694,7 +694,7 @@ bool NeFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, Bool i
drive.fPacket.fPacketContent = fork_data_input;
drive.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drive.fPacket.fPacketLba = startFork - sizeof(NFS_FORK_STRUCT);
+ drive.fPacket.fPacketLba = startFork - sizeof(NFS_FORK_STRUCT);
drive.fOutput(&drive.fPacket);
@@ -732,7 +732,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::FindCatalog(_Input const Char* catalogNa
drive.fPacket.fPacketContent = &fs_buf;
drive.fPacket.fPacketSize = sizeof(NFS_ROOT_PARTITION_BLOCK);
- drive.fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
+ drive.fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
drive.fInput(&drive.fPacket);
@@ -745,7 +745,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::FindCatalog(_Input const Char* catalogNa
NFS_CATALOG_STRUCT temporary_catalog{0};
- drive.fPacket.fPacketLba = startCatalogList;
+ drive.fPacket.fPacketLba = startCatalogList;
drive.fPacket.fPacketContent = &temporary_catalog;
drive.fPacket.fPacketSize = sizeof(NFS_CATALOG_STRUCT);
@@ -799,7 +799,7 @@ _Output NFS_CATALOG_STRUCT* NeFSParser::FindCatalog(_Input const Char* catalogNa
NeFSSearchThroughCatalogList:
while (drive.fPacket.fPacketGood)
{
- drive.fPacket.fPacketLba = startCatalogList;
+ drive.fPacket.fPacketLba = startCatalogList;
drive.fPacket.fPacketContent = &temporary_catalog;
drive.fPacket.fPacketSize = sizeof(NFS_CATALOG_STRUCT);
@@ -901,7 +901,7 @@ Boolean NeFSParser::RemoveCatalog(_Input const Char* catalogName)
Char partitionBlockBuf[sizeof(NFS_ROOT_PARTITION_BLOCK)] = {0};
- drive.fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
+ drive.fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
drive.fPacket.fPacketContent = partitionBlockBuf;
drive.fPacket.fPacketSize = sizeof(NFS_ROOT_PARTITION_BLOCK);
@@ -962,7 +962,7 @@ VoidPtr NeFSParser::ReadCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog,
while (dataForkLba > kNeFSCatalogStartAddress)
{
- drive.fPacket.fPacketLba = dataForkLba;
+ drive.fPacket.fPacketLba = dataForkLba;
drive.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
drive.fPacket.fPacketContent = fs_buf;
diff --git a/dev/ZKAKit/src/NeFS+FileMgr.cc b/dev/ZKAKit/src/NeFS+FileMgr.cc
index 341e6cea..0ea1e752 100644
--- a/dev/ZKAKit/src/NeFS+FileMgr.cc
+++ b/dev/ZKAKit/src/NeFS+FileMgr.cc
@@ -19,7 +19,7 @@ namespace Kernel
NeFileSystemMgr::NeFileSystemMgr()
{
MUST_PASS(Detail::fs_init_newfs());
-
+
NeFSParser* fImpl;
mm_new_class<NeFSParser>(&fImpl);
MUST_PASS(fImpl);
diff --git a/dev/ZKAKit/src/PEFCodeMgr.cc b/dev/ZKAKit/src/PEFCodeMgr.cc
index 90b4a697..d7a6edac 100644
--- a/dev/ZKAKit/src/PEFCodeMgr.cc
+++ b/dev/ZKAKit/src/PEFCodeMgr.cc
@@ -256,8 +256,8 @@ namespace Kernel
STATIC UserProcess proc;
proc.Kind = procKind;
- proc.Image.fCode = errOrStart.Leak().Leak();
- proc.Image.fBlob = exec.GetBlob().Leak().Leak();
+ proc.Image.fCode = errOrStart.Leak().Leak();
+ proc.Image.fBlob = exec.GetBlob().Leak().Leak();
proc.StackSize = *(UIntPtr*)exec.FindSymbol(kPefStackSizeSymbol, kPefData);
proc.MemoryLimit = *(UIntPtr*)exec.FindSymbol(kPefHeapSizeSymbol, kPefData);
proc.PTime = 0UL;
diff --git a/dev/ZKAKit/src/UserProcessScheduler.cc b/dev/ZKAKit/src/UserProcessScheduler.cc
index eb754ade..b96fd6a8 100644
--- a/dev/ZKAKit/src/UserProcessScheduler.cc
+++ b/dev/ZKAKit/src/UserProcessScheduler.cc
@@ -40,7 +40,7 @@ namespace Kernel
STATIC UserProcessScheduler kProcessScheduler;
- UserProcess::UserProcess() = default;
+ UserProcess::UserProcess() = default;
UserProcess::~UserProcess() = default;
/// @brief Gets the last exit code.
@@ -133,7 +133,7 @@ namespace Kernel
}
else
{
- UserProcessHeapList* entry = this->MemoryHeap;
+ UserProcessHeapList* entry = this->MemoryHeap;
UserProcessHeapList* prev_entry = nullptr;
while (!entry)
@@ -235,32 +235,29 @@ namespace Kernel
void UserProcess::Exit(const Int32& exit_code)
{
- if (exit_code > 0)
- this->Status = ProcessStatusKind::kKilled;
- else
- this->Status = ProcessStatusKind::kDead;
+ this->Status = exit_code > 0 ? ProcessStatusKind::kKilled : ProcessStatusKind::KFinishing;
+ this->fLastExitCode = exit_code;
- fLastExitCode = exit_code;
kLastExitCode = exit_code;
auto memory_list = this->MemoryHeap;
+#ifdef __ZKA_AMD64__
+ auto pd = hal_read_cr3();
+ hal_write_cr3(this->VMRegister);
+#endif
+
// Deleting memory lists. Make sure to free all of them.
while (memory_list)
{
if (memory_list->MemoryEntry)
{
-#ifdef __ZKA_AMD64__
- auto pd = hal_read_cr3();
- hal_write_cr3(this->VMRegister);
-#endif
-
MUST_PASS(mm_delete_heap(memory_list->MemoryEntry));
+ }
#ifdef __ZKA_AMD64__
- hal_write_cr3(pd);
+ hal_write_cr3(pd);
#endif
- }
auto next = memory_list->MemoryNext;
@@ -283,14 +280,14 @@ namespace Kernel
if (this->StackFrame && mm_is_valid_heap(this->StackFrame))
mm_delete_heap((VoidPtr)this->StackFrame);
- this->Image.fBlob = nullptr;
- this->Image.fCode = nullptr;
- this->StackFrame = nullptr;
+ this->Image.fBlob = nullptr;
+ this->Image.fCode = nullptr;
+ this->StackFrame = nullptr;
if (this->Kind == kExectuableDLLKind)
{
Bool success = false;
-
+
rtl_fini_dll(this, reinterpret_cast<IPEFDLLObject*>(this->PefDLLDelegate), &success);
if (!success)
@@ -305,6 +302,8 @@ namespace Kernel
mm_delete_heap(reinterpret_cast<VoidPtr>(this->StackReserve));
this->ProcessId = 0;
+
+ this->Status = ProcessStatusKind::kFinished;
}
/***********************************************************************************/
@@ -430,7 +429,7 @@ namespace Kernel
/***********************************************************************************/
/// @brief Run User scheduler object.
- /// @return Process executed within team.
+ /// @return Process count executed within a team.
/***********************************************************************************/
@@ -511,7 +510,7 @@ namespace Kernel
Bool UserProcessHelper::CanBeScheduled(const UserProcess& process)
{
if (process.Status == ProcessStatusKind::kKilled ||
- process.Status == ProcessStatusKind::kDead ||
+ process.Status == ProcessStatusKind::kFinished ||
process.Status == ProcessStatusKind::kFrozen)
return No;
@@ -533,7 +532,7 @@ namespace Kernel
{
return kProcessScheduler.Run();
}
-
+
/***********************************************************************************/
/**
* \brief Does a context switch in a CPU.