summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
Diffstat (limited to 'dev')
-rw-r--r--dev/Boot/BootKit/BootKit.h64
-rw-r--r--dev/Boot/BootKit/BootThread.h (renamed from dev/Boot/BootKit/Thread.h)4
-rw-r--r--dev/Boot/Mod/SysChk/Module.cc4
-rw-r--r--dev/Boot/amd64-desktop.make2
-rw-r--r--dev/Boot/arm64-desktop.make2
-rw-r--r--dev/Boot/arm64-mobile.make2
-rw-r--r--dev/Boot/src/BootThread.cc2
-rw-r--r--dev/Boot/src/HEL/AMD64/EFIBootStartup.cc2
-rw-r--r--dev/Boot/src/HEL/ARM64/EFIBootStartup.cc2
-rw-r--r--dev/Kernel/FSKit/NeFS.h6
-rw-r--r--dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc10
-rw-r--r--dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cc4
-rw-r--r--dev/Kernel/HALKit/AMD64/HalKernelMain.cc4
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cc4
-rw-r--r--dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc8
-rw-r--r--dev/Kernel/KernelKit/DebugOutput.h71
-rw-r--r--dev/Kernel/KernelKit/DeviceMgr.h2
-rw-r--r--dev/Kernel/KernelKit/UserProcessScheduler.h12
-rw-r--r--dev/Kernel/NetworkKit/IPC.h14
-rw-r--r--dev/Kernel/NewKit/KernelPanic.h2
-rw-r--r--dev/Kernel/src/DriveMgr.cc6
-rw-r--r--dev/Kernel/src/FS/NeFS.cc17
-rw-r--r--dev/Kernel/src/KernelMain.cc8
-rw-r--r--dev/Kernel/src/PEFCodeMgr.cc6
-rw-r--r--dev/Kernel/src/UserProcessScheduler.cc2
-rw-r--r--dev/Kernel/src/UserProcessTeam.cc2
26 files changed, 144 insertions, 118 deletions
diff --git a/dev/Boot/BootKit/BootKit.h b/dev/Boot/BootKit/BootKit.h
index 610cc3e9..646cf72f 100644
--- a/dev/Boot/BootKit/BootKit.h
+++ b/dev/Boot/BootKit/BootKit.h
@@ -73,6 +73,13 @@ namespace Boot
BTextWriter& WriteCharacter(CharacterTypeUTF16 c);
BTextWriter& Write(const UChar* str);
+ template <typename T>
+ BTextWriter& operator<<(T elem)
+ {
+ this->Write(elem);
+ return *this;
+ }
+
public:
explicit BTextWriter() = default;
~BTextWriter() = default;
@@ -263,11 +270,11 @@ namespace Boot
/// @brief Write all of the requested catalogs into the filesystem.
/// @param blob_list the blobs.
/// @param blob_cnt the number of blobs to write.
- /// @param partBlock the NeFS partition block.
- Boolean WriteCatalogList(BFileDescriptor* blob_list, SizeT blob_cnt, NFS_ROOT_PARTITION_BLOCK& partBlock)
+ /// @param part the NeFS partition block.
+ Boolean WriteCatalogList(BFileDescriptor* blob_list, SizeT blob_cnt, NFS_ROOT_PARTITION_BLOCK& part)
{
BFileDescriptor* blob = blob_list;
- Lba startLba = partBlock.StartCatalog;
+ Lba startLba = part.StartCatalog;
BTextWriter writer;
NFS_CATALOG_STRUCT catalogKind{0};
@@ -278,12 +285,12 @@ namespace Boot
catalogKind.NextSibling = (startLba + sizeof(NFS_CATALOG_STRUCT) * cNeFSCatalogPadding);
/// Fill catalog kind.
- catalogKind.Kind = blob->fKind;
- catalogKind.Flags |= kNeFSFlagCreated;
+ catalogKind.Kind = blob->fKind;
+ catalogKind.Flags |= kNeFSFlagCreated;
catalogKind.CatalogFlags = kNeFSStatusUnlocked;
- --partBlock.FreeCatalog;
- --partBlock.FreeSectors;
+ --part.FreeCatalog;
+ --part.FreeSectors;
CopyMem(catalogKind.Name, blob->fFileName, StrLen(blob->fFileName));
@@ -330,27 +337,37 @@ namespace Boot
return false;
}
- NFS_ROOT_PARTITION_BLOCK partBlock{0};
+ NFS_ROOT_PARTITION_BLOCK part{0};
- CopyMem(partBlock.Ident, kNeFSIdent, kNeFSIdentLen - 1);
- CopyMem(partBlock.PartitionName, part_name, StrLen(part_name));
+ CopyMem(part.Ident, kNeFSIdent, kNeFSIdentLen - 1);
+ CopyMem(part.PartitionName, part_name, StrLen(part_name));
- partBlock.Version = kNeFSVersionInteger;
- partBlock.CatalogCount = blob_cnt;
- partBlock.Kind = kNeFSHardDrive;
- partBlock.SectorSize = sizeof(NFS_ROOT_PARTITION_BLOCK);
- partBlock.FreeCatalog = fDiskDev.GetSectorsCount() / sizeof(NFS_CATALOG_STRUCT);
- partBlock.SectorCount = fDiskDev.GetSectorsCount();
- partBlock.FreeSectors = fDiskDev.GetSectorsCount();
- partBlock.StartCatalog = kNeFSCatalogStartAddress;
- partBlock.DiskSize = fDiskDev.GetDiskSize();
- partBlock.Flags = kNeFSPartitionTypeBoot | kNeFSPartitionTypeStandard;
+ part.Version = kNeFSVersionInteger;
+ part.CatalogCount = blob_cnt;
+ part.Kind = kNeFSHardDrive;
+ part.SectorSize = sizeof(NFS_ROOT_PARTITION_BLOCK);
+ part.FreeCatalog = fDiskDev.GetSectorsCount() / sizeof(NFS_CATALOG_STRUCT);
+ part.SectorCount = fDiskDev.GetSectorsCount();
+ part.FreeSectors = fDiskDev.GetSectorsCount();
+ part.StartCatalog = kNeFSCatalogStartAddress;
+ part.DiskSize = fDiskDev.GetDiskSize();
+ part.Flags = kNeFSPartitionTypeBoot | kNeFSPartitionTypeStandard;
fDiskDev.Leak().mBase = kNeFSRootCatalogStartAddress;
fDiskDev.Leak().mSize = sizeof(NFS_ROOT_PARTITION_BLOCK);
- fDiskDev.Write((Char*)&partBlock, sizeof(NFS_ROOT_PARTITION_BLOCK));
+ fDiskDev.Write((Char*)&part, sizeof(NFS_ROOT_PARTITION_BLOCK));
+
+ BTextWriter writer;
+
+ writer << "partition name: " << part.PartitionName << "\n";
+ writer << "start: " << part.StartCatalog << "\n";
+ writer << "number of catalogs: " << part.CatalogCount << "\n";
+ writer << "free catalog: " << part.FreeCatalog << "\n";
+ writer << "free sectors: " << part.FreeSectors << "\n";
+ writer << "sector size: " << part.SectorSize << "\n";
+#ifdef BOOTZ_EPM_SUPPORT
BOOT_BLOCK_STRUCT epm_boot{0};
const auto kFsName = "NeFS";
@@ -360,9 +377,9 @@ namespace Boot
epm_boot.FsVersion = kNeFSVersionInteger;
epm_boot.LbaStart = kNeFSRootCatalogStartAddress;
- epm_boot.SectorSz = partBlock.SectorSize;
+ epm_boot.SectorSz = part.SectorSize;
epm_boot.Kind = kEPMZkaOS;
- epm_boot.NumBlocks = partBlock.CatalogCount;
+ epm_boot.NumBlocks = part.CatalogCount;
CopyMem(epm_boot.Name, reinterpret_cast<VoidPtr>(const_cast<Char*>(kBlockName)), StrLen(kBlockName));
CopyMem(epm_boot.Magic, reinterpret_cast<VoidPtr>(const_cast<Char*>(kEPMMagic)), StrLen(kEPMMagic));
@@ -374,6 +391,7 @@ namespace Boot
BTextWriter writer;
writer.Write(L"BootZ: Drive has been formatted Successfully.\r");
+#endif
return YES;
}
diff --git a/dev/Boot/BootKit/Thread.h b/dev/Boot/BootKit/BootThread.h
index 2f6e5b32..e15f7365 100644
--- a/dev/Boot/BootKit/Thread.h
+++ b/dev/Boot/BootKit/BootThread.h
@@ -21,12 +21,12 @@ namespace Boot
{
public:
explicit BootThread() = delete;
- ~BootThread() = default;
+ ~BootThread() = default;
explicit BootThread(Kernel::VoidPtr blob);
BootThread& operator=(const BootThread&) = default;
- BootThread(const BootThread&) = default;
+ BootThread(const BootThread&) = default;
Int32 Start(HEL::BootInfoHeader* handover, BOOL is_own_stack);
void SetName(const char* name);
diff --git a/dev/Boot/Mod/SysChk/Module.cc b/dev/Boot/Mod/SysChk/Module.cc
index 09a7a718..c5edb161 100644
--- a/dev/Boot/Mod/SysChk/Module.cc
+++ b/dev/Boot/Mod/SysChk/Module.cc
@@ -18,7 +18,7 @@
#include <KernelKit/PEF.h>
#include <NewKit/Macros.h>
#include <NewKit/Ref.h>
-#include <BootKit/Thread.h>
+#include <BootKit/BootThread.h>
#include <Mod/GfxMgr/FBMgr.h>
EXTERN_C Int32 ModuleMain(Kernel::HEL::BootInfoHeader* handover)
@@ -27,6 +27,6 @@ EXTERN_C Int32 ModuleMain(Kernel::HEL::BootInfoHeader* handover)
if (partition_factory.IsPartitionValid())
return kEfiOk;
-
+
return kEfiFail;
}
diff --git a/dev/Boot/amd64-desktop.make b/dev/Boot/amd64-desktop.make
index e1d6b113..5b1b1096 100644
--- a/dev/Boot/amd64-desktop.make
+++ b/dev/Boot/amd64-desktop.make
@@ -45,7 +45,7 @@ REM_FLAG=-f
FLAG_ASM=-f win64
FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mno-red-zone -D__MINOSKRNL__ -D__ZBAOSLDR__ \
-DEFI_FUNCTION_WRAPPER -I./ -I../Kernel -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 -DBOOTZ_GPT_SUPPORT -D__HAVE_ZKA_APIS__ -DZBA_USE_FB -D__ZKA_AMD64__ -D__ZKA__ -DZKA_AUTO_FORMAT
BOOTLOADER=zbaosldr.exe
KERNEL=minoskrnl.exe
diff --git a/dev/Boot/arm64-desktop.make b/dev/Boot/arm64-desktop.make
index da4fa237..0594a1cf 100644
--- a/dev/Boot/arm64-desktop.make
+++ b/dev/Boot/arm64-desktop.make
@@ -46,7 +46,7 @@ REM_FLAG=-f
FLAG_ASM=-f win64
FLAG_GNU=-fshort-wchar -c -ffreestanding -MMD -mno-red-zone -D__ZKA_ARM64__ -fno-rtti -fno-exceptions -I./ \
-target aarch64-unknown-windows \
- -std=c++20 -D__FSKIT_USE_NEFS__ -D__BOOTLDR_STANDALONE__ -D__MINOSKRNL__ -D__ZBAOSLDR__ -D__HAVE_ZKA_APIS__ -D__ZKA__ -I../ -I../Kernel
+ -std=c++20 -DBOOTZ_EPM_SUPPORT -D__FSKIT_USE_NEFS__ -D__BOOTLDR_STANDALONE__ -D__MINOSKRNL__ -D__ZBAOSLDR__ -D__HAVE_ZKA_APIS__ -D__ZKA__ -I../ -I../Kernel
BOOT_LOADER=zbaosldr.exe
KERNEL=minoskrnl.exe
diff --git a/dev/Boot/arm64-mobile.make b/dev/Boot/arm64-mobile.make
index 1fe03766..e001dcee 100644
--- a/dev/Boot/arm64-mobile.make
+++ b/dev/Boot/arm64-mobile.make
@@ -46,7 +46,7 @@ REM_FLAG=-f
FLAG_ASM=-f win64
FLAG_GNU=-fshort-wchar -c -ffreestanding -MMD -mno-red-zone -D__ZKA_ARM64__ -fno-rtti -fno-exceptions -I./ \
-target aarch64-unknown-windows \
- -std=c++20 -DkExpectedWidth=320 -DkExpectedHeight=480 -D__FSKIT_USE_NEFS__ -D__BOOTLDR_STANDALONE__ -D__MINOSKRNL__ -D__ZBAOSLDR__ -D__HAVE_ZKA_APIS__ -D__ZKA__ -I../ -I../Kernel
+ -std=c++20 -DBOOTZ_EPM_SUPPORT -DkExpectedWidth=320 -DkExpectedHeight=480 -D__FSKIT_USE_NEFS__ -D__BOOTLDR_STANDALONE__ -D__MINOSKRNL__ -D__ZBAOSLDR__ -D__HAVE_ZKA_APIS__ -D__ZKA__ -I../ -I../Kernel
BOOT_LOADER=zbaosldr.exe
KERNEL=minoskrnl.exe
diff --git a/dev/Boot/src/BootThread.cc b/dev/Boot/src/BootThread.cc
index e0cf11d7..e874c758 100644
--- a/dev/Boot/src/BootThread.cc
+++ b/dev/Boot/src/BootThread.cc
@@ -4,7 +4,7 @@
------------------------------------------- */
-#include <BootKit/Thread.h>
+#include <BootKit/BootThread.h>
#include <BootKit/Support.h>
#include <BootKit/BootKit.h>
#include <FirmwareKit/EFI/API.h>
diff --git a/dev/Boot/src/HEL/AMD64/EFIBootStartup.cc b/dev/Boot/src/HEL/AMD64/EFIBootStartup.cc
index f2d6276b..ff705652 100644
--- a/dev/Boot/src/HEL/AMD64/EFIBootStartup.cc
+++ b/dev/Boot/src/HEL/AMD64/EFIBootStartup.cc
@@ -15,7 +15,7 @@
#include <KernelKit/PEF.h>
#include <NewKit/Macros.h>
#include <NewKit/Ref.h>
-#include <BootKit/Thread.h>
+#include <BootKit/BootThread.h>
#include <Mod/GfxMgr/FBMgr.h>
// Makes the compiler shut up.
diff --git a/dev/Boot/src/HEL/ARM64/EFIBootStartup.cc b/dev/Boot/src/HEL/ARM64/EFIBootStartup.cc
index 4d303c33..279d1e40 100644
--- a/dev/Boot/src/HEL/ARM64/EFIBootStartup.cc
+++ b/dev/Boot/src/HEL/ARM64/EFIBootStartup.cc
@@ -6,7 +6,7 @@
#include <FirmwareKit/EFI/API.h>
#include <FirmwareKit/EFI.h>
-#include <BootKit/Thread.h>
+#include <BootKit/BootThread.h>
#include <BootKit/BootKit.h>
#ifndef kExpectedWidth
diff --git a/dev/Kernel/FSKit/NeFS.h b/dev/Kernel/FSKit/NeFS.h
index 5431225c..cddd09f0 100644
--- a/dev/Kernel/FSKit/NeFS.h
+++ b/dev/Kernel/FSKit/NeFS.h
@@ -112,7 +112,7 @@ default.
#define kNeFSForkNameLen (200)
#define kNeFSFrameworkExt ".fwrk"
-#define kNeFSStepsExt ".step"
+#define kNeFSStepsExt ".step"
#define kNeFSApplicationExt ".app"
#define kNeFSJournalExt ".jrnl"
@@ -394,8 +394,8 @@ namespace Kernel
}
Bool CommitJournal(NeFileSystemParser* parser,
- KString xml_data,
- KString journal_name)
+ KString xml_data,
+ KString journal_name)
{
if (!parser ||
!mNode)
diff --git a/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
index ca3f2353..f97669c8 100644
--- a/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
+++ b/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
@@ -9,7 +9,7 @@
#include <NewKit/KString.h>
#include <POSIXKit/signal.h>
-STATIC BOOL kIsScheduling = NO;
+STATIC BOOL kIsScheduling = NO;
/// @brief Handle GPF fault.
/// @param rsp
@@ -58,8 +58,6 @@ EXTERN_C void idt_handle_pf(Kernel::UIntPtr rsp)
process.Leak().Status = Kernel::ProcessStatusKind::kKilled;
process.Leak().Crash();
-
-
}
/// @brief Handle scheduler interrupt.
@@ -106,8 +104,6 @@ EXTERN_C void idt_handle_math(Kernel::UIntPtr rsp)
process.Leak().Status = Kernel::ProcessStatusKind::kKilled;
process.Leak().Crash();
-
-
}
/// @brief Handle any generic fault.
@@ -132,8 +128,6 @@ EXTERN_C void idt_handle_generic(Kernel::UIntPtr rsp)
process.Leak().Status = Kernel::ProcessStatusKind::kKilled;
process.Leak().Crash();
-
-
}
EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip)
@@ -180,8 +174,6 @@ EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp)
process.Leak().Status = Kernel::ProcessStatusKind::kKilled;
process.Leak().Crash();
-
-
}
/// @brief Enter syscall from assembly.
diff --git a/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cc b/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cc
index ed9bf15b..680aa6ed 100644
--- a/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cc
+++ b/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cc
@@ -28,8 +28,8 @@ namespace Kernel::HAL
UInt16 cCommDivisor = kPITFrequency / ticks; // 100 Hz.
- HAL::rt_out8(kPITControlPort, 0x36); // Command to PIT
- HAL::rt_out8(kPITChannel0Port, cCommDivisor & 0xFF); // Send low byte
+ HAL::rt_out8(kPITControlPort, 0x36); // Command to PIT
+ HAL::rt_out8(kPITChannel0Port, cCommDivisor & 0xFF); // Send low byte
HAL::rt_out8(kPITChannel0Port, (cCommDivisor >> 8) & 0xFF); // Send high byte
hal_clear_irq_mask(32);
diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
index 56f8e1e5..b6ac0f3b 100644
--- a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
+++ b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
@@ -26,7 +26,7 @@ STATIC Kernel::Void hal_init_cxx_ctors()
{
for (Kernel::SizeT i = 0U; i < Kernel::UserProcessScheduler::The().CurrentTeam().AsArray().Count(); ++i)
{
- Kernel::UserProcessScheduler::The().CurrentTeam().AsArray()[i] = Kernel::UserThread();
+ Kernel::UserProcessScheduler::The().CurrentTeam().AsArray()[i] = Kernel::UserThread();
Kernel::UserProcessScheduler::The().CurrentTeam().AsArray()[i].Status = Kernel::ProcessStatusKind::kKilled;
}
@@ -69,7 +69,7 @@ EXTERN_C void hal_init_platform(
/* GDT, mostly descriptors for user and kernel segments. */
STATIC Kernel::HAL::Detail::ZKA_GDT_ENTRY ALIGN(0x08) kGDTArray[kGDTEntriesCount] = {
- {.fLimitLow = 0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x00, .fFlags = 0x00, .fBaseHigh = 0}, // Null entry
+ {.fLimitLow = 0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x00, .fFlags = 0x00, .fBaseHigh = 0}, // Null entry
{.fLimitLow = 0x0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x9A, .fFlags = 0xAF, .fBaseHigh = 0}, // Kernel code
{.fLimitLow = 0x0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x92, .fFlags = 0xCF, .fBaseHigh = 0}, // Kernel data
{.fLimitLow = 0x0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0xFA, .fFlags = 0xAF, .fBaseHigh = 0}, // User code
diff --git a/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cc b/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cc
index ea8840eb..9fc261ef 100644
--- a/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cc
+++ b/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cc
@@ -121,7 +121,7 @@ Void drv_std_read(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, SizeT SectorSz
rt_out8(IO + ATA_REG_SEC_COUNT0, ((Size + SectorSz) / SectorSz));
- rt_out8(IO + ATA_REG_LBA0, (Lba) & 0xFF);
+ rt_out8(IO + ATA_REG_LBA0, (Lba)&0xFF);
rt_out8(IO + ATA_REG_LBA1, (Lba) >> 8);
rt_out8(IO + ATA_REG_LBA2, (Lba) >> 16);
rt_out8(IO + ATA_REG_LBA3, (Lba) >> 24);
@@ -153,7 +153,7 @@ Void drv_std_write(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, SizeT SectorS
rt_out8(IO + ATA_REG_SEC_COUNT0, ((Size + (SectorSz)) / SectorSz));
- rt_out8(IO + ATA_REG_LBA0, (Lba) & 0xFF);
+ rt_out8(IO + ATA_REG_LBA0, (Lba)&0xFF);
rt_out8(IO + ATA_REG_LBA1, (Lba) >> 8);
rt_out8(IO + ATA_REG_LBA2, (Lba) >> 16);
rt_out8(IO + ATA_REG_LBA3, (Lba) >> 24);
diff --git a/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc b/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc
index 2d556b96..fc16a7e3 100644
--- a/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc
+++ b/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc
@@ -22,9 +22,9 @@ namespace Kernel
constexpr auto kFlashBridgeMagic = "FLSH";
constexpr auto kFlashBridgeRevision = 1;
- STATIC BOOL kFlashEnabled = NO;
- STATIC SizeT kFlashSize[kMaxFlashSlots] = {};
- STATIC SizeT kFlashSectorSz[kMaxFlashSlots] = {};
+ STATIC BOOL kFlashEnabled = NO;
+ STATIC SizeT kFlashSize[kMaxFlashSlots] = {};
+ STATIC SizeT kFlashSectorSz[kMaxFlashSlots] = {};
STATIC IMBCIHost* kFlashMetaPackets[kMaxFlashSlots] = {};
STATIC IMBCIHost* kFlashDataPackets[kMaxFlashSlots] = {};
@@ -76,7 +76,7 @@ namespace Kernel
kFlashMetaPackets[slot]->InterruptEnable = NO;
kcout << "Disabled hardware slot at: " << number(slot) << endl;
-
+
return YES;
}
} // namespace Kernel
diff --git a/dev/Kernel/KernelKit/DebugOutput.h b/dev/Kernel/KernelKit/DebugOutput.h
index a3fc5a9d..490ffdec 100644
--- a/dev/Kernel/KernelKit/DebugOutput.h
+++ b/dev/Kernel/KernelKit/DebugOutput.h
@@ -38,8 +38,8 @@ namespace Kernel
class TerminalDevice final ZKA_DEVICE<const Char*>
{
public:
- TerminalDevice(void (*print)(const Char*), void (*get)(const Char*))
- : IDeviceObject<const Char*>(print, get)
+ TerminalDevice(void (*print)(const Char*), void (*gets)(const Char*))
+ : IDeviceObject<const Char*>(print, gets)
{
}
@@ -47,7 +47,7 @@ namespace Kernel
/// @brief returns device name (terminal name)
/// @return string type (const Char*)
- virtual const Char* Name() const override
+ const Char* Name() const override
{
return ("TerminalDevice");
}
@@ -59,35 +59,35 @@ namespace Kernel
inline TerminalDevice end_line()
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- selfTerm.operator<<("\r");
- return selfTerm;
+ self.operator<<("\r");
+ return self;
}
inline TerminalDevice carriage_return()
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- selfTerm.operator<<("\r");
- return selfTerm;
+ self.operator<<("\r");
+ return self;
}
inline TerminalDevice tabulate()
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- selfTerm.operator<<("\t");
- return selfTerm;
+ self.operator<<("\t");
+ return self;
}
/// @brief emulate a terminal bell, like the VT100 does.
inline TerminalDevice bell()
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- selfTerm.operator<<("\a");
- return selfTerm;
+ self.operator<<("\a");
+ return self;
}
namespace Detail
@@ -151,30 +151,39 @@ namespace Kernel
inline TerminalDevice hex_number(const Long& x)
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- Detail::_write_number_hex(x, selfTerm);
- selfTerm.operator<<("h");
+ Detail::_write_number_hex(x, self);
+ self.operator<<("h");
- return selfTerm;
+ return self;
+ }
+
+ inline TerminalDevice number(const Char* x)
+ {
+ TerminalDevice self = TerminalDevice::The();
+
+ self << "?";
+
+ return self;
}
inline TerminalDevice number(const Long& x)
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- Detail::_write_number(x, selfTerm);
+ Detail::_write_number(x, self);
- return selfTerm;
+ return self;
}
inline TerminalDevice get_console_in(Char* buf)
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- selfTerm >> buf;
+ self >> buf;
- return selfTerm;
+ return self;
}
typedef Char rt_debug_type[255];
@@ -185,14 +194,18 @@ namespace Kernel
Int16 fPort[kDebugMaxPorts];
Int16 fBoundCnt;
};
+
+ inline TerminalDevice& operator<<(TerminalDevice& src, auto number)
+ {
+ number(number, src);
+ return src;
+ }
} // namespace Kernel
#ifdef kcout
#undef kcout
#endif // ifdef kcout
-#define kcout \
- (Kernel::TerminalDevice::The() << "\e[0;31m [Kernel] (Path: /" << __FILE__ << ") (Line: " << Kernel::number(__LINE__)); \
- (Kernel::TerminalDevice::The() << ") \e[0m" \
- << ": ")
+#define kcout Kernel::TerminalDevice::The() << "\e[0;31m [ZKA] " << __FILE__ << " \e[0m: "
+
#define endl Kernel::TerminalDevice::The() << Kernel::end_line()
diff --git a/dev/Kernel/KernelKit/DeviceMgr.h b/dev/Kernel/KernelKit/DeviceMgr.h
index 1c9233b7..81684f02 100644
--- a/dev/Kernel/KernelKit/DeviceMgr.h
+++ b/dev/Kernel/KernelKit/DeviceMgr.h
@@ -79,7 +79,7 @@ namespace Kernel
return !fOut || !fIn;
}
- private:
+ protected:
Void (*fOut)(T Data) = {nullptr};
Void (*fIn)(T Data) = {nullptr};
};
diff --git a/dev/Kernel/KernelKit/UserProcessScheduler.h b/dev/Kernel/KernelKit/UserProcessScheduler.h
index 452a55a3..a08a5dc1 100644
--- a/dev/Kernel/KernelKit/UserProcessScheduler.h
+++ b/dev/Kernel/KernelKit/UserProcessScheduler.h
@@ -262,14 +262,14 @@ namespace Kernel
ZKA_COPY_DEFAULT(UserProcessTeam);
Array<UserThread, kSchedProcessLimitPerTeam>& AsArray();
- Ref<UserThread>& AsRef();
- ProcessID& Id() noexcept;
+ Ref<UserThread>& AsRef();
+ ProcessID& Id() noexcept;
public:
Array<UserThread, kSchedProcessLimitPerTeam> mProcessList;
- Ref<UserThread> mCurrentProcess;
- ProcessID mTeamId{0};
- ProcessID mProcessCount{0};
+ Ref<UserThread> mCurrentProcess;
+ ProcessID mTeamId{0};
+ ProcessID mProcessCount{0};
};
using UserProcessRef = UserThread&;
@@ -302,7 +302,7 @@ namespace Kernel
public:
Ref<UserThread>& GetCurrentProcess();
- const SizeT Run() noexcept;
+ const SizeT Run() noexcept;
public:
STATIC UserProcessScheduler& The();
diff --git a/dev/Kernel/NetworkKit/IPC.h b/dev/Kernel/NetworkKit/IPC.h
index 63aa2c13..ae5d1d0c 100644
--- a/dev/Kernel/NetworkKit/IPC.h
+++ b/dev/Kernel/NetworkKit/IPC.h
@@ -65,15 +65,15 @@ namespace Kernel
/// @brief IPC connection header, message cannot be greater than 6K.
typedef struct IPC_MSG final
{
- UInt32 IpcHeaderMagic; // cRemoteHeaderMagic
- UInt8 IpcEndianess; // 0 : LE, 1 : BE
- SizeT IpcPacketSize;
+ UInt32 IpcHeaderMagic; // cRemoteHeaderMagic
+ UInt8 IpcEndianess; // 0 : LE, 1 : BE
+ SizeT IpcPacketSize;
IPC_ADDR IpcFrom;
IPC_ADDR IpcTo;
- UInt32 IpcCRC32;
- UInt32 IpcMsg;
- UInt32 IpcMsgSz;
- UInt8 IpcData[kIPCMsgSize];
+ UInt32 IpcCRC32;
+ UInt32 IpcMsg;
+ UInt32 IpcMsgSz;
+ UInt8 IpcData[kIPCMsgSize];
/// @brief Passes the message to target, could be anything, HTTP packet, JSON or whatever.
Bool Pass(IPC_MSG* target) noexcept
diff --git a/dev/Kernel/NewKit/KernelPanic.h b/dev/Kernel/NewKit/KernelPanic.h
index bd119357..e3c8eaae 100644
--- a/dev/Kernel/NewKit/KernelPanic.h
+++ b/dev/Kernel/NewKit/KernelPanic.h
@@ -29,7 +29,7 @@ namespace Kernel
enum RUNTIME_CHECK
{
- RUNTIME_CHECK_FAILED = 1111,
+ RUNTIME_CHECK_FAILED = 1111,
RUNTIME_CHECK_POINTER,
RUNTIME_CHECK_EXPRESSION,
RUNTIME_CHECK_FILE,
diff --git a/dev/Kernel/src/DriveMgr.cc b/dev/Kernel/src/DriveMgr.cc
index 95e5b988..8e8d5ab2 100644
--- a/dev/Kernel/src/DriveMgr.cc
+++ b/dev/Kernel/src/DriveMgr.cc
@@ -204,7 +204,11 @@ namespace Kernel
{
DriveTrait trait{};
- rt_copy_memory((VoidPtr) "/Disks/OS:", trait.fName, rt_string_len("/Disks/OS:"));
+ const auto kMainDrive = "/Mount/OS:";
+
+ rt_copy_memory((VoidPtr)kMainDrive, trait.fName, rt_string_len(kMainDrive));
+
+ MUST_PASS(trait.fName[0] != 0);
trait.fVerify = io_drv_unimplemented;
trait.fOutput = io_drv_output;
diff --git a/dev/Kernel/src/FS/NeFS.cc b/dev/Kernel/src/FS/NeFS.cc
index 3dcf13da..b0a7c6c6 100644
--- a/dev/Kernel/src/FS/NeFS.cc
+++ b/dev/Kernel/src/FS/NeFS.cc
@@ -309,7 +309,7 @@ _Output NFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char*
return nullptr;
}
-
+
constexpr SizeT kDefaultForkSize = kNeFSForkSize;
NFS_CATALOG_STRUCT* child_catalog = new NFS_CATALOG_STRUCT();
@@ -460,6 +460,7 @@ _Output NFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char*
/// @return If it was sucessful, see err_global_get().
bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLba, _Input const Int32 flags, const Char* part_name)
{
+#ifdef ZKA_EPM_SUPPORT
if (*part_name == 0 ||
endLba == 0)
return false;
@@ -490,14 +491,14 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L
if (flags & kNeFSPartitionTypeBoot)
{
// make it bootable when needed.
- Char bufEpmHdr[kNeFSSectorSz] = {0};
+ Char buf_epm[kNeFSSectorSz] = {0};
- BOOT_BLOCK_STRUCT* epm_boot = (BOOT_BLOCK_STRUCT*)bufEpmHdr;
+ BOOT_BLOCK_STRUCT* epm_boot = (BOOT_BLOCK_STRUCT*)buf_epm;
// Write a new EPM entry.
constexpr auto kFsName = "NeFS";
- constexpr auto kBlockName = "ZKA:";
+ constexpr auto kBlockName = "ZkaOS:";
rt_copy_memory(reinterpret_cast<VoidPtr>(const_cast<Char*>(kFsName)), epm_boot->Fs, rt_string_len(kFsName));
@@ -533,7 +534,7 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L
epm_boot->LbaEnd = endLba;
epm_boot->NumBlocks = cnt;
- drive->fPacket.fPacketContent = bufEpmHdr;
+ drive->fPacket.fPacketContent = buf_epm;
drive->fPacket.fPacketSize = sizeof(EPM_BOOT_BLOCK);
drive->fPacket.fPacketLba = outEpmLba;
@@ -616,6 +617,7 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L
drive->fInput(&drive->fPacket);
}
+#endif // ZKA_EPM_SUPPORT
return false;
}
@@ -817,7 +819,6 @@ kNeFSSearchThroughCatalogList:
return nullptr;
}
-
/// ignore unallocated catalog, break
if (!(temporary_catalog.Flags & kNeFSFlagCreated))
{
@@ -846,8 +847,8 @@ kNeFSSearchThroughCatalogList:
if (local_search_first)
{
- local_search_first = false;
- start_catalog_lba = kStartCatalogList;
+ local_search_first = false;
+ start_catalog_lba = kStartCatalogList;
goto kNeFSSearchThroughCatalogList;
}
diff --git a/dev/Kernel/src/KernelMain.cc b/dev/Kernel/src/KernelMain.cc
index 58592a10..303b1d81 100644
--- a/dev/Kernel/src/KernelMain.cc
+++ b/dev/Kernel/src/KernelMain.cc
@@ -40,10 +40,10 @@ namespace Kernel::Detail
if (mNeFS)
{
- const SizeT kFolderCount = 8;
- const Char* kFolderStr[kFolderCount] = {
- "/", "/Boot/", "/System/", "/Support/", "/Applications/",
- "/Users/", "/Library/", "/Mount/"};
+ const SizeT kFolderCount = 8;
+ const Char* kFolderStr[kFolderCount] = {
+ "/", "/Boot/", "/System/", "/Support/", "/Applications/",
+ "/Users/", "/Library/", "/Mount/"};
for (Kernel::SizeT dir_index = 0UL; dir_index < kFolderCount; ++dir_index)
{
diff --git a/dev/Kernel/src/PEFCodeMgr.cc b/dev/Kernel/src/PEFCodeMgr.cc
index 17f7f895..497e1f28 100644
--- a/dev/Kernel/src/PEFCodeMgr.cc
+++ b/dev/Kernel/src/PEFCodeMgr.cc
@@ -253,14 +253,12 @@ namespace Kernel
if (errOrStart.Error() != kErrorSuccess)
return kProcessInvalidID;
- UserThread process;
-
auto id = UserProcessScheduler::The().Spawn(reinterpret_cast<const Char*>(exec.FindSymbol(kPefNameSymbol, kPefData)), errOrStart.Leak().Leak(), exec.GetBlob().Leak().Leak());
if (id != kProcessInvalidID)
{
- UserProcessScheduler::The().CurrentTeam().AsArray()[id].Kind = process_kind;
- UserProcessScheduler::The().CurrentTeam().AsArray()[id].StackSize = *(UIntPtr*)exec.FindSymbol(kPefStackSizeSymbol, kPefData);
+ UserProcessScheduler::The().CurrentTeam().AsArray()[id].Kind = process_kind;
+ UserProcessScheduler::The().CurrentTeam().AsArray()[id].StackSize = *(UIntPtr*)exec.FindSymbol(kPefStackSizeSymbol, kPefData);
UserProcessScheduler::The().CurrentTeam().AsArray()[id].MemoryLimit = *(UIntPtr*)exec.FindSymbol(kPefHeapSizeSymbol, kPefData);
}
diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc
index 85915e10..936d0547 100644
--- a/dev/Kernel/src/UserProcessScheduler.cc
+++ b/dev/Kernel/src/UserProcessScheduler.cc
@@ -547,7 +547,7 @@ namespace Kernel
auto prev_ptime = HardwareThreadScheduler::The()[index].Leak()->fPTime;
HardwareThreadScheduler::The()[index].Leak()->fPTime = UserProcessScheduler::The().CurrentTeam().AsArray()[new_pid].PTime;
- Bool ret = HardwareThreadScheduler::The()[index].Leak()->Switch(image_ptr, stack, frame_ptr, new_pid);
+ Bool ret = HardwareThreadScheduler::The()[index].Leak()->Switch(image_ptr, stack, frame_ptr, new_pid);
////////////////////////////////////////////////////////////
/// Rollback on fail. ///
diff --git a/dev/Kernel/src/UserProcessTeam.cc b/dev/Kernel/src/UserProcessTeam.cc
index a41160cc..aea75121 100644
--- a/dev/Kernel/src/UserProcessTeam.cc
+++ b/dev/Kernel/src/UserProcessTeam.cc
@@ -17,7 +17,7 @@ namespace Kernel
{
for (SizeT i = 0U; i < this->mProcessList.Count(); ++i)
{
- this->mProcessList[i] = UserThread();
+ this->mProcessList[i] = UserThread();
this->mProcessList[i].Status = ProcessStatusKind::kKilled;
}