summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal <amlal@nekernel.org>2025-04-25 08:37:12 +0200
committerAmlal <amlal@nekernel.org>2025-04-25 08:37:12 +0200
commit97f5407670a796ba41e107175f8242abba0c81cc (patch)
tree931e6e6dc703485129769b71f4dafa5e0bfcbb2a /dev
parent2a34afdf04a5ec24d091469fa50a09882c898881 (diff)
dev, boot, kernel: improvements, and fixing the VEPM formatter.
Signed-off-by: Amlal <amlal@nekernel.org>
Diffstat (limited to 'dev')
-rw-r--r--dev/boot/BootKit/BootKit.h207
-rw-r--r--dev/boot/BootKit/HW/ATA.h2
-rw-r--r--dev/boot/modules/SysChk/SysChk.cc17
-rw-r--r--dev/boot/modules/SysChk/amd64-pio-epm.json10
-rw-r--r--dev/boot/src/BootThread.cc16
-rw-r--r--dev/kernel/FSKit/NeFS.h2
-rw-r--r--dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc52
-rw-r--r--dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc2
-rw-r--r--dev/kernel/HALKit/AMD64/HalKernelPanic.cc10
-rw-r--r--dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc16
-rw-r--r--dev/kernel/HALKit/AMD64/PCI/DMA.cc4
-rw-r--r--dev/kernel/HALKit/AMD64/Storage/PIO+Generic.cc2
-rw-r--r--dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc2
-rw-r--r--dev/kernel/HALKit/ARM64/HalKernelPanic.cc4
-rw-r--r--dev/kernel/HALKit/POWER/AP.h4
-rw-r--r--dev/kernel/HALKit/POWER/HalAP.cc40
-rw-r--r--dev/kernel/HALKit/POWER/HalApplicationProcessor.cc41
-rw-r--r--dev/kernel/HALKit/POWER/HalHardwareThread.cc (renamed from dev/kernel/HALKit/POWER/HalThread.cc)0
-rw-r--r--dev/kernel/HALKit/RISCV/AP.h4
-rw-r--r--dev/kernel/HALKit/RISCV/HalAP.cc40
-rw-r--r--dev/kernel/HALKit/RISCV/HalApplicationProcessor.cc45
-rw-r--r--dev/kernel/src/ACPIFactoryInterface.cc16
-rw-r--r--dev/kernel/src/BitMapMgr.cc18
-rw-r--r--dev/kernel/src/CxxAbi-AMD64.cc6
-rw-r--r--dev/kernel/src/CxxAbi-ARM64.cc4
-rw-r--r--dev/kernel/src/FS/NeFS.cc52
-rw-r--r--dev/kernel/src/IndexableProperty.cc2
-rw-r--r--dev/kernel/src/MemoryMgr.cc6
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc8
29 files changed, 268 insertions, 364 deletions
diff --git a/dev/boot/BootKit/BootKit.h b/dev/boot/BootKit/BootKit.h
index 6299e27b..7b2a4f0a 100644
--- a/dev/boot/BootKit/BootKit.h
+++ b/dev/boot/BootKit/BootKit.h
@@ -32,6 +32,9 @@
#include <FirmwareKit/GPT.h>
#include <FirmwareKit/EFI.h>
+#define kBKBootFileMime "boot-x/file"
+#define kBKBootDirMime "boot-x/dir"
+
/***********************************************************************************/
/// Framebuffer helpers.
/***********************************************************************************/
@@ -184,15 +187,6 @@ namespace Boot
#endif // __EFI_x86_64__
- static inline const UInt32 kRgbRed = 0x000000FF;
- static inline const UInt32 kRgbGreen = 0x0000FF00;
- static inline const UInt32 kRgbBlue = 0x00FF0000;
- static inline const UInt32 kRgbBlack = 0x00000000;
- static inline const UInt32 kRgbWhite = 0x00FFFFFF;
-
-#define kBKBootFileMime "boot-x/file"
-#define kBKBootDirMime "boot-x/dir"
-
/// @brief BootKit Drive Formatter.
template <typename BootDev>
class BDiskFormatFactory final
@@ -207,11 +201,6 @@ namespace Boot
public:
explicit BDiskFormatFactory() = default;
- explicit BDiskFormatFactory(BootDev dev)
- : fDiskDev(dev)
- {
- }
-
~BDiskFormatFactory() = default;
NE_COPY_DELETE(BDiskFormatFactory)
@@ -222,18 +211,35 @@ namespace Boot
/// @param blob_sz blobs array count.
/// @retval True disk has been formatted.
/// @retval False failed to format.
- Boolean Format(const Char* part_name, BFileDescriptor* blob, SizeT blob_sz);
+ Boolean Format(const Char* part_name);
/// @brief check if partition is good.
Bool IsPartitionValid() noexcept
{
#if defined(BOOTZ_EPM_SUPPORT)
+ fDiskDev.Leak().mBase = (kEPMBootBlockLba);
+ fDiskDev.Leak().mSize = sizeof(EPM_PART_BLOCK);
+
+ EPM_PART_BLOCK buf_epm = {};
+
+ fDiskDev.Read((Char*)&buf_epm, sizeof(EPM_PART_BLOCK));
+
+ if (StrCmp(buf_epm.Magic, kEPMMagic))
+ {
+ return false;
+ }
+
+ if (buf_epm.Version != kEPMRevisionBcd)
+ {
+ return false;
+ }
+
fDiskDev.Leak().mBase = (kNeFSRootCatalogStartAddress);
- fDiskDev.Leak().mSize = BootDev::kSectorSize;
+ fDiskDev.Leak().mSize = sizeof(NEFS_ROOT_PARTITION_BLOCK);
- Char buf[BootDev::kSectorSize] = {0};
+ Char buf[sizeof(NEFS_ROOT_PARTITION_BLOCK)] = {0};
- fDiskDev.Read(buf, BootDev::kSectorSize);
+ fDiskDev.Read(buf, sizeof(NEFS_ROOT_PARTITION_BLOCK));
NEFS_ROOT_PARTITION_BLOCK* blockPart = reinterpret_cast<NEFS_ROOT_PARTITION_BLOCK*>(buf);
@@ -258,55 +264,29 @@ namespace Boot
return false;
}
- writer.Write(L"BootZ: Partition: ").Write(blockPart->PartitionName).Write(L" is healthy.\r");
+ writer.Write(L"BootZ: NeFS Partition: ").Write(blockPart->PartitionName).Write(L" is healthy.\r");
return true;
#else
- return false;
-#endif
- }
+ GPT_PARTITION_TABLE gpt_part{};
- private:
- /// @brief Write all of the requested catalogs into the filesystem.
- /// @param blob the blobs.
- /// @param blob_sz the number of blobs to write (n * sizeof(blob_struct)).
- /// @param part the NeFS partition block.
- Boolean WriteCatalogList(BFileDescriptor* blob, SizeT blob_sz, NEFS_ROOT_PARTITION_BLOCK& part)
- {
- if (blob_sz < sizeof(NEFS_CATALOG_STRUCT))
- return NO;
+ fDiskDev.Leak().mBase = (kGPTPartitionTableLBA);
+ fDiskDev.Leak().mSize = sizeof(GPT_PARTITION_TABLE);
- if (!blob)
- return NO;
+ fDiskDev.Read((Char*)&gpt_part, sizeof(GPT_PARTITION_TABLE));
- Lba startLba = part.StartCatalog;
BootTextWriter writer;
- NEFS_CATALOG_STRUCT catalogKind{0};
-
- constexpr auto cNeFSCatalogPadding = 4;
-
- catalogKind.PrevSibling = startLba;
- catalogKind.NextSibling = (startLba + sizeof(NEFS_CATALOG_STRUCT) * cNeFSCatalogPadding);
-
- /// Fill catalog kind.
- catalogKind.Kind = blob->fKind;
- catalogKind.Flags |= kNeFSFlagCreated;
- catalogKind.CatalogFlags = kNeFSStatusUnlocked;
-
- --part.FreeCatalog;
- --part.FreeSectors;
-
- CopyMem(catalogKind.Name, blob->fFileName, StrLen(blob->fFileName));
-
- fDiskDev.Leak().mBase = startLba;
- fDiskDev.Leak().mSize = sizeof(NEFS_CATALOG_STRUCT);
-
- fDiskDev.Write((Char*)&catalogKind, sizeof(NEFS_CATALOG_STRUCT));
+ if (StrCmp(gpt_part.Signature, kMagicGPT) == 0)
+ {
+ writer.Write("BootZ: GPT Partition found.\r");
+ return true;
+ }
- writer.Write(L"BootZ: wrote root directory: ").Write(blob->fFileName).Write(L"\r");
+ writer.Write("BootZ: No Partition found.\r");
- return true;
+ return false;
+#endif
}
private:
@@ -320,13 +300,9 @@ namespace Boot
/// @retval True disk has been formatted.
/// @retval False failed to format.
template <typename BootDev>
- inline Boolean BDiskFormatFactory<BootDev>::Format(const Char* part_name,
- BDiskFormatFactory::BFileDescriptor* blob,
- SizeT blob_sz)
+ inline Boolean BDiskFormatFactory<BootDev>::Format(const Char* part_name)
{
- if (!blob || !blob_sz)
- return false; /// sanity check
-
+#if defined(BOOTZ_EPM_SUPPORT)
/// @note A catalog roughly equal to a sector in NeFS terms.
constexpr auto kMinimumDiskSize = kNeFSMinimumDiskSize; // at minimum.
@@ -344,7 +320,7 @@ namespace Boot
CopyMem(part.PartitionName, part_name, StrLen(part_name));
part.Version = kNeFSVersionInteger;
- part.CatalogCount = blob_sz / sizeof(NEFS_CATALOG_STRUCT);
+ part.CatalogCount = blob_sz;
part.Kind = BootDev::kSectorSize;
part.SectorSize = kATASectorSize;
part.FreeCatalog = fDiskDev.GetSectorsCount() / sizeof(NEFS_CATALOG_STRUCT);
@@ -363,7 +339,6 @@ namespace Boot
writer << "BootZ: Free sectors: " << part.FreeSectors << "\r";
writer << "BootZ: Sector size: " << part.SectorSize << "\r";
-#if defined(BOOTZ_EPM_SUPPORT)
EPM_PART_BLOCK epm_boot{};
const auto kFsName = "NeFS";
@@ -393,38 +368,36 @@ namespace Boot
fDiskDev.Write((Char*)&part, sizeof(NEFS_ROOT_PARTITION_BLOCK));
writer.Write(L"BootZ: Drive is EPM formatted.\r");
-#elif defined(BOOTZ_GPT_SUPPORT) || defined(BOOTZ_VEPM_SUPPORT)
+#elif defined(BOOTZ_VEPM_SUPPORT)
+ NE_UNUSED(part_name);
+
GPT_PARTITION_TABLE gpt_part{};
CopyMem(gpt_part.Signature, reinterpret_cast<VoidPtr>(const_cast<Char*>(kMagicGPT)), StrLen(kMagicGPT));
- gpt_part.Revision = 0x00010000;
+ gpt_part.Revision = 0x00010000;
gpt_part.HeaderSize = sizeof(GPT_PARTITION_TABLE);
gpt_part.CRC32 = 0x00000000;
- gpt_part.Reserved1 = 0x00000000;
- gpt_part.LBAHeader = 0x00000000;
- gpt_part.LBAAltHeader = 0x00000000;
+ gpt_part.Reserved1 = 0x00000000;
+ gpt_part.LBAHeader = 0x00000000;
+ gpt_part.LBAAltHeader = 0x00000000;
gpt_part.FirstGPTEntry = 0x00000000;
- gpt_part.LastGPTEntry = 0x00000000;
+ gpt_part.LastGPTEntry = 0x00000000;
-#if defined(BOOTZ_GPT_SUPPORT)
gpt_part.Guid.Data1 = 0x00000000;
gpt_part.Guid.Data2 = 0x0000;
gpt_part.Guid.Data3 = 0x0000;
SetMem(gpt_part.Guid.Data4, 0, 8);
-#else
- gpt_part.Guid = kVEPMGuidEFI;
-#endif
gpt_part.Revision = 0x00010000;
- gpt_part.StartingLBA = 0x00000000;
+ gpt_part.StartingLBA = 0x00000000;
gpt_part.NumPartitionEntries = 0x00000000;
- gpt_part.SizeOfEntries = 0x00000000;
- gpt_part.CRC32PartEntry = 0x00000000;
+ gpt_part.SizeOfEntries = 0x00000000;
+ gpt_part.CRC32PartEntry = 0x00000000;
SetMem(gpt_part.Reserved2, 0, kSectorAlignGPT_PartTbl);
@@ -433,84 +406,8 @@ namespace Boot
fDiskDev.Write((Char*)&gpt_part, sizeof(GPT_PARTITION_TABLE));
-#if defined(BOOTZ_VEPM_SUPPORT)
- const auto kBlockName = "OS (VEPM)";
-
- GPT_PARTITION_ENTRY gpt_part_entry{};
-
- gpt_part_entry.StartLBA = kNeFSRootCatalogStartAddress;
- gpt_part_entry.EndLBA = fDiskDev.GetDiskSize();
- gpt_part_entry.Attributes = 0x00000000;
-
- gpt_part_entry.PartitionTypeGUID.Data1 = 0x00000000;
- gpt_part_entry.PartitionTypeGUID.Data2 = 0x0000;
- gpt_part_entry.PartitionTypeGUID.Data3 = 0x0000;
-
- CopyMem(gpt_part_entry.Name, reinterpret_cast<VoidPtr>(const_cast<Char*>(kBlockName)), StrLen(kBlockName));
-
- SetMem(gpt_part_entry.PartitionTypeGUID.Data4, 0, 8);
-
- EPM_PART_BLOCK epm_boot{};
-
- const auto kFsName = "NeFS";
-
- epm_boot.FsVersion = kNeFSVersionInteger;
- epm_boot.LbaStart = kNeFSRootCatalogStartAddress;
- epm_boot.LbaEnd = fDiskDev.GetDiskSize();
- epm_boot.SectorSz = part.SectorSize;
- epm_boot.Kind = kEPMNeKernel;
- epm_boot.NumBlocks = part.CatalogCount;
-
- epm_boot.Guid = kEPMNilGuid;
-
- CopyMem(epm_boot.Fs, reinterpret_cast<VoidPtr>(const_cast<Char*>(kFsName)), StrLen(kFsName));
- 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));
-
- fDiskDev.Leak().mBase = kGPTPartitionTableLBA + sizeof(GPT_PARTITION_TABLE);
- fDiskDev.Leak().mSize = sizeof(GPT_PARTITION_ENTRY);
-
- fDiskDev.Write((Char*)&gpt_part_entry, sizeof(GPT_PARTITION_ENTRY));
-
- fDiskDev.Leak().mBase = gpt_part_entry.StartLBA;
- fDiskDev.Leak().mSize = sizeof(EPM_PART_BLOCK);
-
- fDiskDev.Write((Char*)&epm_boot, sizeof(EPM_PART_BLOCK));
-
- fDiskDev.Leak().mBase = gpt_part_entry.StartLBA + kNeFSRootCatalogStartAddress;
- fDiskDev.Leak().mSize = sizeof(NEFS_ROOT_PARTITION_BLOCK);
-
- fDiskDev.Write((Char*)&part, sizeof(NEFS_ROOT_PARTITION_BLOCK));
-
- writer.Write(L"BootZ: Drive is vEPM formatted.\r");
-#else
- const auto kBlockName = "OS (GPT)";
-
- GPT_PARTITION_ENTRY gpt_part_entry{0};
-
- gpt_part_entry.StartLBA = kNeFSRootCatalogStartAddress;
- gpt_part_entry.EndLBA = fDiskDev.GetDiskSize();
- gpt_part_entry.Attributes = 0x00000000;
-
- gpt_part_entry.PartitionTypeGUID.Data1 = 0x00000000;
- gpt_part_entry.PartitionTypeGUID.Data2 = 0x0000;
- gpt_part_entry.PartitionTypeGUID.Data3 = 0x0000;
-
- CopyMem(gpt_part_entry.Name, reinterpret_cast<VoidPtr>(const_cast<Char*>(kBlockName)), StrLen(kBlockName));
-
- SetMem(gpt_part_entry.PartitionTypeGUID.Data4, 0, 8);
-
- fDiskDev.Leak().mBase = kGPTPartitionTableLBA + sizeof(GPT_PARTITION_TABLE);
- fDiskDev.Leak().mSize = sizeof(GPT_PARTITION_ENTRY);
- fDiskDev.Write((Char*)&gpt_part_entry, sizeof(GPT_PARTITION_ENTRY));
-
- fDiskDev.Leak().mBase = gpt_part_entry.StartLBA;
- fDiskDev.Leak().mSize = sizeof(NEFS_ROOT_PARTITION_BLOCK);
-
- fDiskDev.Write((Char*)&part, sizeof(NEFS_ROOT_PARTITION_BLOCK));
-
+ BootTextWriter writer;
writer.Write(L"BootZ: Drive is GPT formatted.\r");
-#endif /// defined(BOOTZ_VEPM_SUPPORT)
#endif
return YES;
diff --git a/dev/boot/BootKit/HW/ATA.h b/dev/boot/BootKit/HW/ATA.h
index cc5e1166..56393125 100644
--- a/dev/boot/BootKit/HW/ATA.h
+++ b/dev/boot/BootKit/HW/ATA.h
@@ -23,8 +23,6 @@ public:
explicit BootDeviceATA() noexcept;
~BootDeviceATA() = default;
- NE_COPY_DELETE(BootDeviceATA)
-
enum
{
kSectorSize = kATASectorSize
diff --git a/dev/boot/modules/SysChk/SysChk.cc b/dev/boot/modules/SysChk/SysChk.cc
index 16684666..032c031d 100644
--- a/dev/boot/modules/SysChk/SysChk.cc
+++ b/dev/boot/modules/SysChk/SysChk.cc
@@ -28,29 +28,18 @@
EXTERN_C Int32 SysChkModuleMain(Kernel::HEL::BootInfoHeader* handover)
{
- NE_UNUSED(handover);
-
#if defined(__ATA_PIO__)
fw_init_efi((EfiSystemTable*)handover->f_FirmwareCustomTables[1]);
Boot::BDiskFormatFactory<BootDeviceATA> partition_factory;
if (partition_factory.IsPartitionValid())
- return kEfiFail;
-
- Boot::BDiskFormatFactory<BootDeviceATA>::BFileDescriptor desc{};
-
- desc.fFileName[0] = '/';
- desc.fFileName[1] = 0;
- desc.fKind = kNeFSCatalogKindDir;
-
- partition_factory.Format(kMachineModel, &desc, 1);
-
- if (partition_factory.IsPartitionValid())
return kEfiOk;
- return kEfiFail;
+ return partition_factory.Format(kMachineModel) == YES;
#else
+ NE_UNUSED(handover);
+
return kEfiOk;
#endif
}
diff --git a/dev/boot/modules/SysChk/amd64-pio-epm.json b/dev/boot/modules/SysChk/amd64-pio-epm.json
index ccbb7d04..14a804d0 100644
--- a/dev/boot/modules/SysChk/amd64-pio-epm.json
+++ b/dev/boot/modules/SysChk/amd64-pio-epm.json
@@ -1,7 +1,13 @@
{
"compiler_path": "x86_64-w64-mingw32-g++",
"compiler_std": "c++20",
- "headers_path": ["../", "../../", "../../../kernel", "../../../", "./"],
+ "headers_path": [
+ "../",
+ "../../",
+ "../../../kernel",
+ "../../../",
+ "./"
+ ],
"sources_path": [
"*.cc",
"*.S",
@@ -31,4 +37,4 @@
"kChkVersionLowest=0x0100",
"kChkVersion=0x0100"
]
-}
+} \ No newline at end of file
diff --git a/dev/boot/src/BootThread.cc b/dev/boot/src/BootThread.cc
index efbacc32..b6236df8 100644
--- a/dev/boot/src/BootThread.cc
+++ b/dev/boot/src/BootThread.cc
@@ -190,22 +190,22 @@ namespace Boot
if (own_stack)
{
- writer.Write("BootZ: Using own stack.\r");
+ writer.Write("BootZ: Using it's own stack.\r");
writer.Write("BootZ: Stack address: ").Write((UIntPtr)&fStack[mib_cast(16) - 1]).Write("\r");
writer.Write("BootZ: Stack size: ").Write(mib_cast(16)).Write("\r");
auto ret = rt_jump_to_address(fStartAddress, fHandover, &fStack[mib_cast(16) - 1]);
+
+ // we don't need the stack anymore.
+
+ delete[] fStack;
+ fStack = nullptr;
+
return ret;
}
else
{
- delete[] fStack;
- fStack = nullptr;
- // we don't need the stack anymore.
-
- BootTextWriter writer;
-
- writer.Write("BootZ: Using EFI stack.\r");
+ writer.Write("BootZ: Using Bootloader's stack.\r");
return reinterpret_cast<HEL::HandoverProc>(fStartAddress)(fHandover);
}
diff --git a/dev/kernel/FSKit/NeFS.h b/dev/kernel/FSKit/NeFS.h
index b6f92bc9..6b1849ff 100644
--- a/dev/kernel/FSKit/NeFS.h
+++ b/dev/kernel/FSKit/NeFS.h
@@ -432,7 +432,7 @@ namespace Kernel
if (!parser->CreateFork(new_fork))
return NO;
- (void)(kout << "XML commit: " << xml_data << " to fork: " << journal_name << kendl);
+ (Void)(kout << "XML commit: " << xml_data << " to fork: " << journal_name << kendl);
auto ret = parser->WriteCatalog(new_fork.CatalogName, YES, xml_data, rt_string_len(xml_data), new_fork.ForkName);
diff --git a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
index 1f865057..fc50380a 100644
--- a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
+++ b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
@@ -36,15 +36,17 @@
namespace Kernel::HAL
{
- struct PROCESS_APIC_MADT;
- struct PROCESS_CONTROL_BLOCK;
+ struct HAL_APIC_MADT;
+ struct HAL_HARDWARE_THREAD;
- struct PROCESS_CONTROL_BLOCK final
+ struct HAL_HARDWARE_THREAD final
{
- HAL::StackFramePtr mFrame;
+ HAL::StackFramePtr mFramePtr;
+ ProcessID mProcessID{0};
+ UInt8 mCoreID{0};
};
- STATIC PROCESS_APIC_MADT* kMADTBlock = nullptr;
+ STATIC HAL_APIC_MADT* kMADTBlock = nullptr;
STATIC Bool kSMPAware = false;
STATIC Int64 kSMPCount = 0;
@@ -55,7 +57,7 @@ namespace Kernel::HAL
STATIC VoidPtr kRawMADT = nullptr;
/// @brief Multiple APIC Descriptor Table.
- struct PROCESS_APIC_MADT final SDT_OBJECT
+ struct HAL_APIC_MADT final SDT_OBJECT
{
UInt32 Address; // Madt address
UInt8 Flags; // Madt flags
@@ -65,8 +67,8 @@ namespace Kernel::HAL
UInt8 Type;
UInt8 Len;
- union {
- struct
+ union APIC {
+ struct IOAPIC
{
UInt8 IoID;
UInt8 Zero;
@@ -74,7 +76,7 @@ namespace Kernel::HAL
UInt32 GISBase;
} IOAPIC;
- struct
+ struct LAPIC_NMI
{
UInt8 Source;
UInt8 IRQSource;
@@ -82,27 +84,27 @@ namespace Kernel::HAL
UInt16 Flags;
} LApicNMI;
- struct
+ struct LAPIC
{
UInt8 ProcessorID;
UInt16 Flags;
UInt8 LINT;
} LAPIC;
- struct
+ struct LAPIC_OVERRIDE
{
UInt16 Reserved;
UInt64 Address;
} LApicOverride;
- struct
+ struct LAPIC_X2
{
UInt16 Reserved;
UInt32 x2APICID;
UInt32 Flags;
UInt32 AcpiID;
- } LApic;
- };
+ } LocalApicX2;
+ } Apic;
} List[1]; // Records List
};
@@ -145,12 +147,13 @@ namespace Kernel::HAL
}
}
- STATIC PROCESS_CONTROL_BLOCK kProcessBlocks[kSchedProcessLimitPerTeam] = {0};
+ STATIC HAL_HARDWARE_THREAD kHWThread[kSchedProcessLimitPerTeam] = {{}};
EXTERN_C HAL::StackFramePtr mp_get_current_context(Int64 pid)
{
const auto process_index = pid % kSchedProcessLimitPerTeam;
- return kProcessBlocks[process_index].mFrame;
+
+ return kHWThread[process_index].mFramePtr;
}
EXTERN_C BOOL mp_register_process(HAL::StackFramePtr stack_frame, ProcessID pid)
@@ -159,11 +162,12 @@ namespace Kernel::HAL
const auto process_index = pid % kSchedProcessLimitPerTeam;
- kProcessBlocks[process_index].mFrame = stack_frame;
+ kHWThread[process_index].mFramePtr = stack_frame;
+ kHWThread[process_index].mProcessID = pid;
- auto first_id = kAPICLocales[0];
+ kHWThread[process_index].mCoreID = kAPICLocales[0];
- hal_send_sipi(kApicBaseAddress, first_id, (UInt8)(((UIntPtr)stack_frame->BP) >> 12));
+ hal_send_sipi(kApicBaseAddress, kHWThread[process_index].mCoreID, (UInt8)(((UIntPtr)stack_frame->BP) >> 12));
return YES;
}
@@ -205,7 +209,7 @@ namespace Kernel::HAL
auto hw_and_pow_int = PowerFactoryInterface(vendor_ptr);
kRawMADT = hw_and_pow_int.Find(kAPIC_Signature).Leak().Leak();
- kMADTBlock = reinterpret_cast<PROCESS_APIC_MADT*>(kRawMADT);
+ kMADTBlock = reinterpret_cast<HAL_APIC_MADT*>(kRawMADT);
kSMPAware = NO;
if (kMADTBlock)
@@ -229,11 +233,11 @@ namespace Kernel::HAL
switch (kMADTBlock->List[index].Type)
{
case 0x00: {
- if (kMADTBlock->List[kSMPCount].LAPIC.ProcessorID < 1)
+ if (kMADTBlock->List[kSMPCount].Apic.LAPIC.ProcessorID < 1)
break;
- kAPICLocales[kSMPCount] = kMADTBlock->List[kSMPCount].LAPIC.ProcessorID;
- (void)(kout << "SMP: APIC ID: " << number(kAPICLocales[kSMPCount]) << kendl);
+ kAPICLocales[kSMPCount] = kMADTBlock->List[kSMPCount].Apic.LAPIC.ProcessorID;
+ (Void)(kout << "SMP: APIC ID: " << number(kAPICLocales[kSMPCount]) << kendl);
++kSMPCount;
break;
@@ -245,7 +249,7 @@ namespace Kernel::HAL
++index;
}
- (void)(kout << "SMP: Number of APs: " << number(kSMPCount) << kendl);
+ (Void)(kout << "SMP: Number of APs: " << number(kSMPCount) << kendl);
// Kernel is now SMP aware.
// That means that the scheduler is now available (on MP Kernels)
diff --git a/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
index 7dce21d1..4c873554 100644
--- a/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
+++ b/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
@@ -148,7 +148,7 @@ EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip)
kIsScheduling = NO;
- (void)(Kernel::kout << "Kernel: Process RIP: " << Kernel::hex_number(rip) << Kernel::kendl);
+ (Void)(Kernel::kout << "Kernel: Process RIP: " << Kernel::hex_number(rip) << Kernel::kendl);
Kernel::kout << "Kernel: SIGTRAP\r";
process.Leak().Signal.SignalArg = rip;
diff --git a/dev/kernel/HALKit/AMD64/HalKernelPanic.cc b/dev/kernel/HALKit/AMD64/HalKernelPanic.cc
index 2641f058..9c8a235a 100644
--- a/dev/kernel/HALKit/AMD64/HalKernelPanic.cc
+++ b/dev/kernel/HALKit/AMD64/HalKernelPanic.cc
@@ -33,9 +33,9 @@ namespace Kernel
/***********************************************************************************/
Void ke_panic(const Kernel::Int32& id, const Char* message)
{
- (void)(kout << "Kernel_Panic_MSG: " << message << kendl);
- (void)(kout << "Kernel_Panic_ID: " << hex_number(id) << kendl);
- (void)(kout << "Kernel_Panic_CR2: " << hex_number((UIntPtr)hal_read_cr2()) << kendl);
+ (Void)(kout << "Kernel_Panic_MSG: " << message << kendl);
+ (Void)(kout << "Kernel_Panic_ID: " << hex_number(id) << kendl);
+ (Void)(kout << "Kernel_Panic_CR2: " << hex_number((UIntPtr)hal_read_cr2()) << kendl);
RecoveryFactory::Recover();
}
@@ -52,8 +52,8 @@ namespace Kernel
{
if (!expr)
{
- (void)(kout << "Kernel_Panic_File: " << file << kendl);
- (void)(kout << "Kernel_Panic_Line: " << line << kendl);
+ (Void)(kout << "Kernel_Panic_File: " << file << kendl);
+ (Void)(kout << "Kernel_Panic_Line: " << line << kendl);
ke_panic(RUNTIME_CHECK_FAILED, file); // Runtime Check failed
}
diff --git a/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc b/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc
index c6c24be1..08caed82 100644
--- a/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc
+++ b/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc
@@ -41,14 +41,14 @@ namespace Kernel::HAL
/***********************************************************************************/
STATIC Void mmi_page_status(Detail::PTE* pte)
{
- (void)(kout << (pte->Present ? "Present" : "Not Present") << kendl);
- (void)(kout << (pte->Wr ? "W/R" : "Not W/R") << kendl);
- (void)(kout << (pte->Nx ? "NX" : "Not NX") << kendl);
- (void)(kout << (pte->User ? "User" : "Not User") << kendl);
- (void)(kout << (pte->Pcd ? "Not Cached" : "Cached") << kendl);
- (void)(kout << (pte->Accessed ? "Accessed" : "Not Accessed") << kendl);
- (void)(kout << hex_number(pte->PhysicalAddress) << kendl);
- (void)(kout << (pte->ProtectionKey ? "Protected" : "Not Protected/PKU Disabled") << kendl);
+ (Void)(kout << (pte->Present ? "Present" : "Not Present") << kendl);
+ (Void)(kout << (pte->Wr ? "W/R" : "Not W/R") << kendl);
+ (Void)(kout << (pte->Nx ? "NX" : "Not NX") << kendl);
+ (Void)(kout << (pte->User ? "User" : "Not User") << kendl);
+ (Void)(kout << (pte->Pcd ? "Not Cached" : "Cached") << kendl);
+ (Void)(kout << (pte->Accessed ? "Accessed" : "Not Accessed") << kendl);
+ (Void)(kout << hex_number(pte->PhysicalAddress) << kendl);
+ (Void)(kout << (pte->ProtectionKey ? "Protected" : "Not Protected/PKU Disabled") << kendl);
}
/***********************************************************************************/
diff --git a/dev/kernel/HALKit/AMD64/PCI/DMA.cc b/dev/kernel/HALKit/AMD64/PCI/DMA.cc
index 4a63625e..b16039d4 100644
--- a/dev/kernel/HALKit/AMD64/PCI/DMA.cc
+++ b/dev/kernel/HALKit/AMD64/PCI/DMA.cc
@@ -38,7 +38,7 @@ namespace Kernel
if (!this->fAddress)
return false;
- (void)(kout << "[DMAWrapper::Write] Writing at address: " << hex_number(reinterpret_cast<UIntPtr>(this->fAddress) + offset) << kendl);
+ (Void)(kout << "[DMAWrapper::Write] Writing at address: " << hex_number(reinterpret_cast<UIntPtr>(this->fAddress) + offset) << kendl);
ke_dma_write<UInt32>(reinterpret_cast<UIntPtr>(this->fAddress), offset, bit);
@@ -52,7 +52,7 @@ namespace Kernel
if (!this->fAddress)
return ~0;
- (void)(kout << "[DMAWrapper::Write] Writing at address: " << hex_number(reinterpret_cast<UIntPtr>(this->fAddress) + offset) << kendl);
+ (Void)(kout << "[DMAWrapper::Write] Writing at address: " << hex_number(reinterpret_cast<UIntPtr>(this->fAddress) + offset) << kendl);
return (UIntPtr)ke_dma_read<UInt32>(reinterpret_cast<UIntPtr>(this->fAddress), offset);
}
diff --git a/dev/kernel/HALKit/AMD64/Storage/PIO+Generic.cc b/dev/kernel/HALKit/AMD64/Storage/PIO+Generic.cc
index 257dd5c8..cd25ab7f 100644
--- a/dev/kernel/HALKit/AMD64/Storage/PIO+Generic.cc
+++ b/dev/kernel/HALKit/AMD64/Storage/PIO+Generic.cc
@@ -108,7 +108,7 @@ ATAInit_Retry:
kATADiskModel[40] = '\0';
- (void)(kout << "Drive Model: " << kATADiskModel << kendl);
+ (Void)(kout << "Drive Model: " << kATADiskModel << kendl);
return true;
}
diff --git a/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc b/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc
index 1553b2ed..7d985a44 100644
--- a/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc
+++ b/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc
@@ -93,7 +93,7 @@ namespace Kernel
const UInt16 kInterruptScheduler = 0x20;
- (void)(kout << "Handling interrupt for AP: " << interrupt << kendl);
+ (Void)(kout << "Handling interrupt for AP: " << interrupt << kendl);
switch (interrupt)
{
diff --git a/dev/kernel/HALKit/ARM64/HalKernelPanic.cc b/dev/kernel/HALKit/ARM64/HalKernelPanic.cc
index 1c88ccc6..ad966991 100644
--- a/dev/kernel/HALKit/ARM64/HalKernelPanic.cc
+++ b/dev/kernel/HALKit/ARM64/HalKernelPanic.cc
@@ -71,8 +71,8 @@ namespace Kernel
{
if (!expr)
{
- (void)(kout << "FAILED: FILE: " << file << kendl);
- (void)(kout << "FAILED: LINE: " << line << kendl);
+ (Void)(kout << "FAILED: FILE: " << file << kendl);
+ (Void)(kout << "FAILED: LINE: " << line << kendl);
ke_panic(RUNTIME_CHECK_FAILED, file); // Runtime Check failed
}
diff --git a/dev/kernel/HALKit/POWER/AP.h b/dev/kernel/HALKit/POWER/AP.h
index c990b950..4558804b 100644
--- a/dev/kernel/HALKit/POWER/AP.h
+++ b/dev/kernel/HALKit/POWER/AP.h
@@ -26,7 +26,9 @@ namespace Kernel
typedef struct HAL_HARDWARE_THREAD
{
Kernel::UIntPtr fStartAddress;
- Kernel::UInt8 fPrivleged : 1;
+ Kernel::UIntPtr fStackPtr;
+ Kernel::UIntPtr fFramePtr;
+ Kernel::UInt8 fPrivileged : 1;
Kernel::UInt32 fPageMemoryFlags;
hal_ap_kind fIdentNumber;
} HAL_HARDWARE_THREAD;
diff --git a/dev/kernel/HALKit/POWER/HalAP.cc b/dev/kernel/HALKit/POWER/HalAP.cc
deleted file mode 100644
index 781b34a6..00000000
--- a/dev/kernel/HALKit/POWER/HalAP.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -------------------------------------------
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
-
-------------------------------------------- */
-
-#include <HALKit/POWER/Processor.h>
-#include <KernelKit/DebugOutput.h>
-#include <HALKit/POWER/AP.h>
-
-using namespace Kernel;
-
-namespace Kernel::Detail
-{
- STATIC void mp_hang_fn(void)
- {
- while (YES)
- ;
- }
-} // namespace Kernel::Detail
-
-/// @brief wakes up thread.
-/// wakes up thread from hang.
-void mp_wakeup_thread(HAL::StackFramePtr stack)
-{
- if (!stack)
- return;
-
- hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15), reinterpret_cast<VoidPtr>(stack->BP));
-}
-
-/// @brief makes thread sleep.
-/// hooks and hangs thread to prevent code from executing.
-void mp_hang_thread(HAL::StackFramePtr stack)
-{
- if (!stack)
- return;
-
- hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15), reinterpret_cast<VoidPtr>(Kernel::Detail::mp_hang_fn));
-}
diff --git a/dev/kernel/HALKit/POWER/HalApplicationProcessor.cc b/dev/kernel/HALKit/POWER/HalApplicationProcessor.cc
new file mode 100644
index 00000000..ca2153e3
--- /dev/null
+++ b/dev/kernel/HALKit/POWER/HalApplicationProcessor.cc
@@ -0,0 +1,41 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
+
+------------------------------------------- */
+
+#include <HALKit/POWER/Processor.h>
+#include <KernelKit/DebugOutput.h>
+#include <HALKit/POWER/AP.h>
+
+namespace Kernel::Detail
+{
+ STATIC void mp_hang_fn(void)
+ {
+ while (YES)
+ ;
+ }
+} // namespace Kernel::Detail
+
+namespace Kernel
+{
+ /// @brief wakes up thread.
+ /// wakes up thread from hang.
+ void mp_wakeup_thread(HAL::StackFramePtr stack)
+ {
+ if (!stack)
+ return;
+
+ hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15), reinterpret_cast<VoidPtr>(stack->BP));
+ }
+
+ /// @brief makes thread sleep.
+ /// hooks and hangs thread to prevent code from executing.
+ void mp_hang_thread(HAL::StackFramePtr stack)
+ {
+ if (!stack)
+ return;
+
+ hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15), reinterpret_cast<VoidPtr>(Kernel::Detail::mp_hang_fn));
+ }
+} // namespace Kernel \ No newline at end of file
diff --git a/dev/kernel/HALKit/POWER/HalThread.cc b/dev/kernel/HALKit/POWER/HalHardwareThread.cc
index 40bb7d8a..40bb7d8a 100644
--- a/dev/kernel/HALKit/POWER/HalThread.cc
+++ b/dev/kernel/HALKit/POWER/HalHardwareThread.cc
diff --git a/dev/kernel/HALKit/RISCV/AP.h b/dev/kernel/HALKit/RISCV/AP.h
index 0a8546e9..e55e3462 100644
--- a/dev/kernel/HALKit/RISCV/AP.h
+++ b/dev/kernel/HALKit/RISCV/AP.h
@@ -22,7 +22,9 @@ namespace Kernel
typedef struct HAL_HARDWARE_THREAD
{
Kernel::UIntPtr fStartAddress;
- Kernel::UInt8 fPrivleged : 1;
+ Kernel::UIntPtr fStackPtr;
+ Kernel::UIntPtr fFramePtr;
+ Kernel::UInt8 fPrivileged : 1;
Kernel::UInt32 fPageMemoryFlags;
hal_ap_kind fIdentNumber;
} HAL_HARDWARE_THREAD;
diff --git a/dev/kernel/HALKit/RISCV/HalAP.cc b/dev/kernel/HALKit/RISCV/HalAP.cc
deleted file mode 100644
index 72a3cf13..00000000
--- a/dev/kernel/HALKit/RISCV/HalAP.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -------------------------------------------
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
-
-------------------------------------------- */
-
-#include <HALKit/RISCV/Processor.h>
-#include <KernelKit/DebugOutput.h>
-#include <HALKit/RISCV/AP.h>
-
-using namespace Kernel;
-
-namespace Kernel::Detail
-{
- STATIC void mp_hang_fn(void)
- {
- while (YES)
- ;
- }
-} // namespace Kernel::Detail
-
-/// @brief wakes up thread.
-/// wakes up thread from hang.
-void mp_wakeup_thread(HAL::StackFramePtr stack)
-{
- if (!stack)
- return;
-
- hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15), reinterpret_cast<VoidPtr>(stack->BP));
-}
-
-/// @brief makes thread sleep.
-/// hooks and hangs thread to prevent code from executing.
-void mp_hang_thread(HAL::StackFramePtr stack)
-{
- if (!stack)
- return;
-
- hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15), reinterpret_cast<VoidPtr>(Kernel::Detail::mp_hang_fn));
-}
diff --git a/dev/kernel/HALKit/RISCV/HalApplicationProcessor.cc b/dev/kernel/HALKit/RISCV/HalApplicationProcessor.cc
new file mode 100644
index 00000000..1967a649
--- /dev/null
+++ b/dev/kernel/HALKit/RISCV/HalApplicationProcessor.cc
@@ -0,0 +1,45 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
+
+------------------------------------------- */
+
+#include <HALKit/RISCV/Processor.h>
+#include <KernelKit/DebugOutput.h>
+#include <HALKit/RISCV/AP.h>
+
+using namespace Kernel;
+
+namespace Kernel
+{
+ namespace Detail
+ {
+ STATIC void mp_hang_fn(void)
+ {
+ while (YES)
+ ;
+ }
+
+ } // namespace Detail
+
+ /// @brief wakes up thread.
+ /// wakes up thread from hang.
+ void mp_wakeup_thread(HAL::StackFramePtr stack)
+ {
+ if (!stack)
+ return;
+
+ hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15), reinterpret_cast<VoidPtr>(stack->BP));
+ }
+
+ /// @brief makes thread sleep.
+ /// hooks and hangs thread to prevent code from executing.
+ void mp_hang_thread(HAL::StackFramePtr stack)
+ {
+ if (!stack)
+ return;
+
+ hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15), reinterpret_cast<VoidPtr>(Kernel::Detail::mp_hang_fn));
+ }
+
+} // namespace Kernel
diff --git a/dev/kernel/src/ACPIFactoryInterface.cc b/dev/kernel/src/ACPIFactoryInterface.cc
index b85d6ab3..9a3c30d0 100644
--- a/dev/kernel/src/ACPIFactoryInterface.cc
+++ b/dev/kernel/src/ACPIFactoryInterface.cc
@@ -43,10 +43,10 @@ namespace Kernel
this->fEntries = num;
- (void)(kout << "ACPI: Number of entries: " << number(this->fEntries) << kendl);
- (void)(kout << "ACPI: Revision: " << number(xsdt->Revision) << kendl);
- (void)(kout << "ACPI: Signature: " << xsdt->Signature << kendl);
- (void)(kout << "ACPI: Address of XSDT: " << hex_number((UIntPtr)xsdt) << kendl);
+ (Void)(kout << "ACPI: Number of entries: " << number(this->fEntries) << kendl);
+ (Void)(kout << "ACPI: Revision: " << number(xsdt->Revision) << kendl);
+ (Void)(kout << "ACPI: Signature: " << xsdt->Signature << kendl);
+ (Void)(kout << "ACPI: Address of XSDT: " << hex_number((UIntPtr)xsdt) << kendl);
const short cAcpiSignatureLength = 4;
@@ -54,8 +54,8 @@ namespace Kernel
{
SDT* sdt = reinterpret_cast<SDT*>(xsdt->AddressArr[index]);
- (void)(kout << "ACPI: Checksum: " << number(sdt->Checksum) << kendl);
- (void)(kout << "ACPI: Revision: " << number(sdt->Revision) << kendl);
+ (Void)(kout << "ACPI: Checksum: " << number(sdt->Checksum) << kendl);
+ (Void)(kout << "ACPI: Revision: " << number(sdt->Revision) << kendl);
for (short signature_index = 0; signature_index < cAcpiSignatureLength; ++signature_index)
{
@@ -64,8 +64,8 @@ namespace Kernel
if (signature_index == (cAcpiSignatureLength - 1))
{
- (void)(kout << "ACPI: SDT Signature: " << sdt->Signature << kendl);
- (void)(kout << "ACPI: SDT OEM ID: " << sdt->OemId << kendl);
+ (Void)(kout << "ACPI: SDT Signature: " << sdt->Signature << kendl);
+ (Void)(kout << "ACPI: SDT OEM ID: " << sdt->OemId << kendl);
return ErrorOr<voidPtr>(reinterpret_cast<voidPtr>(xsdt->AddressArr[index]));
}
}
diff --git a/dev/kernel/src/BitMapMgr.cc b/dev/kernel/src/BitMapMgr.cc
index 1a1e2c0d..83efe4eb 100644
--- a/dev/kernel/src/BitMapMgr.cc
+++ b/dev/kernel/src/BitMapMgr.cc
@@ -161,18 +161,18 @@ namespace Kernel
{
if (!this->IsBitMap(ptr_bit_set))
{
- (void)(kout << "Not a BitMap: " << hex_number((UIntPtr)ptr_bit_set) << kendl);
+ (Void)(kout << "Not a BitMap: " << hex_number((UIntPtr)ptr_bit_set) << kendl);
return;
}
- (void)(kout << "Magic: " << hex_number(ptr_bit_set[kBitMapMagIdx]) << kendl);
- (void)(kout << "Is Allocated? " << (ptr_bit_set[kBitMapUsedIdx] ? "YES" : "NO") << kendl);
- (void)(kout << "Size of BitMap (B): " << number(ptr_bit_set[kBitMapSizeIdx]) << kendl);
- (void)(kout << "Size of BitMap (KIB): " << number(KIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
- (void)(kout << "Size of BitMap (MIB): " << number(MIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
- (void)(kout << "Size of BitMap (GIB): " << number(GIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
- (void)(kout << "Size of BitMap (TIB): " << number(TIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
- (void)(kout << "BitMap Address: " << hex_number((UIntPtr)ptr_bit_set) << kendl);
+ (Void)(kout << "Magic: " << hex_number(ptr_bit_set[kBitMapMagIdx]) << kendl);
+ (Void)(kout << "Is Allocated? " << (ptr_bit_set[kBitMapUsedIdx] ? "YES" : "NO") << kendl);
+ (Void)(kout << "Size of BitMap (B): " << number(ptr_bit_set[kBitMapSizeIdx]) << kendl);
+ (Void)(kout << "Size of BitMap (KIB): " << number(KIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
+ (Void)(kout << "Size of BitMap (MIB): " << number(MIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
+ (Void)(kout << "Size of BitMap (GIB): " << number(GIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
+ (Void)(kout << "Size of BitMap (TIB): " << number(TIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
+ (Void)(kout << "BitMap Address: " << hex_number((UIntPtr)ptr_bit_set) << kendl);
}
};
} // namespace Detail
diff --git a/dev/kernel/src/CxxAbi-AMD64.cc b/dev/kernel/src/CxxAbi-AMD64.cc
index 6bf5d009..950e0c02 100644
--- a/dev/kernel/src/CxxAbi-AMD64.cc
+++ b/dev/kernel/src/CxxAbi-AMD64.cc
@@ -19,13 +19,13 @@ Kernel::UIntPtr __dso_handle;
EXTERN_C Kernel::Void __cxa_pure_virtual(void* self)
{
- (void)(Kernel::kout << "object: " << Kernel::number(reinterpret_cast<Kernel::UIntPtr>(self)));
- (void)(Kernel::kout << ", has unimplemented virtual functions.\r");
+ (Kernel::Void)(Kernel::kout << "object: " << Kernel::number(reinterpret_cast<Kernel::UIntPtr>(self)));
+ (Kernel::Void)(Kernel::kout << ", has unimplemented virtual functions.\r");
}
EXTERN_C void ___chkstk_ms(void)
{
- (void)(Kernel::kout << "Stack smashing detected!\r");
+ (Kernel::Void)(Kernel::kout << "Stack smashing detected!\r");
dbg_break_point();
}
diff --git a/dev/kernel/src/CxxAbi-ARM64.cc b/dev/kernel/src/CxxAbi-ARM64.cc
index 34dab83a..b3db3815 100644
--- a/dev/kernel/src/CxxAbi-ARM64.cc
+++ b/dev/kernel/src/CxxAbi-ARM64.cc
@@ -83,8 +83,8 @@ namespace cxxabiv1
EXTERN_C Kernel::Void _purecall(void* self)
{
- kout << "object: " << Kernel::number(reinterpret_cast<Kernel::UIntPtr>(self));
- kout << ", has unimplemented virtual functions.\r";
+ (Kernel::Void)(Kernel::kout << "object: " << Kernel::number(reinterpret_cast<Kernel::UIntPtr>(self)));
+ (Kernel::Void)(Kernel::kout << ", has unimplemented virtual functions.\r");
}
EXTERN_C Kernel::Void _Init_thread_footer(Kernel::Int* thread_obj)
diff --git a/dev/kernel/src/FS/NeFS.cc b/dev/kernel/src/FS/NeFS.cc
index e8e3804c..8ebd551f 100644
--- a/dev/kernel/src/FS/NeFS.cc
+++ b/dev/kernel/src/FS/NeFS.cc
@@ -73,7 +73,7 @@ _Output BOOL NeFileSystemParser::CreateFork(_Input NEFS_FORK_STRUCT& the_fork)
Lba lba = catalog->DataFork;
- (void)(kout << "Fork LBA: " << hex_number(lba) << kendl);
+ (Void)(kout << "Fork LBA: " << hex_number(lba) << kendl);
if (lba < kNeFSCatalogStartAddress)
return NO;
@@ -94,7 +94,7 @@ _Output BOOL NeFileSystemParser::CreateFork(_Input NEFS_FORK_STRUCT& the_fork)
drv.fInput(drv.fPacket);
- (void)(kout << "Next fork: " << hex_number(cur_fork.NextSibling) << kendl);
+ (Void)(kout << "Next fork: " << hex_number(cur_fork.NextSibling) << kendl);
if (cur_fork.Flags & kNeFSFlagCreated)
{
@@ -144,10 +144,10 @@ _Output BOOL NeFileSystemParser::CreateFork(_Input NEFS_FORK_STRUCT& the_fork)
fs_ifs_write(&kMountpoint, drv, MountpointInterface::kDriveIndexA);
/// log what we have now.
- (void)(kout << "Fork offset is at: " << hex_number(the_fork.DataOffset)
+ (Void)(kout << "Fork offset is at: " << hex_number(the_fork.DataOffset)
<< kendl);
- (void)(kout << "Wrote fork metadata at: " << hex_number(lba) << kendl);
+ (Void)(kout << "Wrote fork metadata at: " << hex_number(lba) << kendl);
return YES;
}
@@ -461,7 +461,7 @@ _Output Bool NeFileSystemParser::FormatGPT(_Input _Output DriveTrait* drive, _In
NE_UNUSED(flags);
NE_UNUSED(part_name);
- (void)(kout << "FormatGPT: Not implemented yet.\r");
+ (Void)(kout << "FormatGPT: Not implemented yet.\r");
return NO;
}
@@ -600,14 +600,14 @@ bool NeFileSystemParser::FormatEPM(_Input _Output DriveTrait* drive, _Input cons
drive->fOutput(drive->fPacket);
- (void)(kout << "drive kind: " << drive->fProtocol() << kendl);
+ (Void)(kout << "drive kind: " << drive->fProtocol() << kendl);
- (void)(kout << "partition name: " << part_block->PartitionName << kendl);
- (void)(kout << "start: " << hex_number(part_block->StartCatalog) << kendl);
- (void)(kout << "number of catalogs: " << hex_number(part_block->CatalogCount) << kendl);
- (void)(kout << "free catalog: " << hex_number(part_block->FreeCatalog) << kendl);
- (void)(kout << "free sectors: " << hex_number(part_block->FreeSectors) << kendl);
- (void)(kout << "sector size: " << hex_number(part_block->SectorSize) << kendl);
+ (Void)(kout << "partition name: " << part_block->PartitionName << kendl);
+ (Void)(kout << "start: " << hex_number(part_block->StartCatalog) << kendl);
+ (Void)(kout << "number of catalogs: " << hex_number(part_block->CatalogCount) << kendl);
+ (Void)(kout << "free catalog: " << hex_number(part_block->FreeCatalog) << kendl);
+ (Void)(kout << "free sectors: " << hex_number(part_block->FreeSectors) << kendl);
+ (Void)(kout << "sector size: " << hex_number(part_block->SectorSize) << kendl);
// write the root catalog.
this->CreateCatalog(kNeFSRoot, 0, kNeFSCatalogKindDir);
@@ -666,7 +666,7 @@ bool NeFileSystemParser::WriteCatalog(_Input const Char* catalog_name, Bool is_r
NEFS_FORK_STRUCT* fork_data_input = new NEFS_FORK_STRUCT();
NEFS_FORK_STRUCT prev_fork{};
- (void)(kout << hex_number(startFork) << kendl);
+ (Void)(kout << hex_number(startFork) << kendl);
// sanity check of the fork position as the condition to run the loop.
while (startFork >= kNeFSCatalogStartAddress)
@@ -677,13 +677,13 @@ bool NeFileSystemParser::WriteCatalog(_Input const Char* catalog_name, Bool is_r
drive.fInput(drive.fPacket);
- (void)(kout << hex_number(fork_data_input->DataSize) << kendl);
- (void)(kout << hex_number(size_of_data) << kendl);
- (void)(kout << hex_number(fork_data_input->Flags) << kendl);
- (void)(kout << fork_name << kendl);
- (void)(kout << fork_data_input->ForkName << kendl);
- (void)(kout << fork_data_input->CatalogName << kendl);
- (void)(kout << catalog_name << kendl);
+ (Void)(kout << hex_number(fork_data_input->DataSize) << kendl);
+ (Void)(kout << hex_number(size_of_data) << kendl);
+ (Void)(kout << hex_number(fork_data_input->Flags) << kendl);
+ (Void)(kout << fork_name << kendl);
+ (Void)(kout << fork_data_input->ForkName << kendl);
+ (Void)(kout << fork_data_input->CatalogName << kendl);
+ (Void)(kout << catalog_name << kendl);
if ((fork_data_input->Flags & kNeFSFlagCreated) &&
KStringBuilder::Equals(fork_data_input->ForkName, fork_name) &&
@@ -698,11 +698,11 @@ bool NeFileSystemParser::WriteCatalog(_Input const Char* catalog_name, Bool is_r
drive.fPacket.fPacketSize = size_of_data;
drive.fPacket.fPacketLba = fork_data_input->DataOffset;
- (void)(kout << "data offset: " << hex_number(fork_data_input->DataOffset) << kendl);
+ (Void)(kout << "data offset: " << hex_number(fork_data_input->DataOffset) << kendl);
drive.fOutput(drive.fPacket);
- (void)(kout << "wrote data at offset: " << hex_number(fork_data_input->DataOffset) << kendl);
+ (Void)(kout << "wrote data at offset: " << hex_number(fork_data_input->DataOffset) << kendl);
delete fork_data_input;
delete[] buf;
@@ -841,8 +841,8 @@ kNeFSSearchThroughCatalogList:
goto NeFSContinueSearch;
}
- (void)(kout << "Found available catalog at: " << hex_number(start_catalog_lba) << kendl);
- (void)(kout << "Found available catalog at: " << temporary_catalog.Name << kendl);
+ (Void)(kout << "Found available catalog at: " << hex_number(start_catalog_lba) << kendl);
+ (Void)(kout << "Found available catalog at: " << temporary_catalog.Name << kendl);
NEFS_CATALOG_STRUCT* catalog_ptr = new NEFS_CATALOG_STRUCT();
rt_copy_memory(&temporary_catalog, catalog_ptr, sizeof(NEFS_CATALOG_STRUCT));
@@ -998,8 +998,8 @@ VoidPtr NeFileSystemParser::ReadCatalog(_Input _Output NEFS_CATALOG_STRUCT* cata
fs_fork_data = fs_buf;
- (void)(kout << "ForkName: " << fs_fork_data->ForkName << kendl);
- (void)(kout << "CatalogName: " << fs_fork_data->CatalogName << kendl);
+ (Void)(kout << "ForkName: " << fs_fork_data->ForkName << kendl);
+ (Void)(kout << "CatalogName: " << fs_fork_data->CatalogName << kendl);
if (KStringBuilder::Equals(forkName, fs_fork_data->ForkName) &&
KStringBuilder::Equals(catalog->Name, fs_fork_data->CatalogName))
diff --git a/dev/kernel/src/IndexableProperty.cc b/dev/kernel/src/IndexableProperty.cc
index d586398d..05440ee9 100644
--- a/dev/kernel/src/IndexableProperty.cc
+++ b/dev/kernel/src/IndexableProperty.cc
@@ -50,7 +50,7 @@ namespace Kernel
indexer.AddFlag(kIndexerClaimed);
rt_copy_memory((VoidPtr)indexer.Leak().Path, (VoidPtr)filename, filenameLen);
- (void)(kout << "FSKit: Indexed new file: " << filename << kendl);
+ (Void)(kout << "FSKit: Indexed new file: " << filename << kendl);
}
}
} // namespace Indexer
diff --git a/dev/kernel/src/MemoryMgr.cc b/dev/kernel/src/MemoryMgr.cc
index eff54435..2f70d85f 100644
--- a/dev/kernel/src/MemoryMgr.cc
+++ b/dev/kernel/src/MemoryMgr.cc
@@ -150,7 +150,7 @@ namespace Kernel
auto result = reinterpret_cast<VoidPtr>(heap_info_ptr->fOffset);
- (void)(kout << "Registered heap address: " << hex_number(reinterpret_cast<UIntPtr>(heap_info_ptr)) << kendl);
+ (Void)(kout << "Registered heap address: " << hex_number(reinterpret_cast<UIntPtr>(heap_info_ptr)) << kendl);
return result;
}
@@ -172,7 +172,7 @@ namespace Kernel
heap_info_ptr->fPage = true;
- (void)(kout << "Registered page address: " << hex_number(reinterpret_cast<UIntPtr>(heap_info_ptr)) << kendl);
+ (Void)(kout << "Registered page address: " << hex_number(reinterpret_cast<UIntPtr>(heap_info_ptr)) << kendl);
return kErrorSuccess;
}
@@ -239,7 +239,7 @@ namespace Kernel
heap_info_ptr->fMagic = 0;
heap_info_ptr->fPad = 0;
- (void)(kout << "Address has been successfully freed: " << hex_number((UIntPtr)heap_info_ptr) << kendl);
+ (Void)(kout << "Address has been successfully freed: " << hex_number((UIntPtr)heap_info_ptr) << kendl);
PTEWrapper page_wrapper(No, No, No, reinterpret_cast<UIntPtr>(heap_info_ptr) - sizeof(Detail::MM_INFORMATION_BLOCK));
Ref<PTEWrapper> pte_address{page_wrapper};
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc
index fb33e447..d6be0f5f 100644
--- a/dev/kernel/src/UserProcessScheduler.cc
+++ b/dev/kernel/src/UserProcessScheduler.cc
@@ -60,7 +60,7 @@ namespace Kernel
if (this->Status != ProcessStatusKind::kRunning)
return;
- (void)(kout << this->Name << ": crashed, error id: " << number(-kErrorProcessFault) << kendl);
+ (Void)(kout << this->Name << ": crashed, error id: " << number(-kErrorProcessFault) << kendl);
this->Exit(-kErrorProcessFault);
}
@@ -439,7 +439,7 @@ namespace Kernel
break;
}
default: {
- (void)(kout << "Unknown process kind: " << hex_number(process.Kind) << kendl);
+ (Void)(kout << "Unknown process kind: " << hex_number(process.Kind) << kendl);
break;
}
}
@@ -468,8 +468,8 @@ namespace Kernel
process.Status = ProcessStatusKind::kStarting;
process.PTime = (UIntPtr)AffinityKind::kStandard;
- (void)(kout << "PID: " << number(process.ProcessId) << kendl);
- (void)(kout << "Name: " << process.Name << kendl);
+ (Void)(kout << "PID: " << number(process.ProcessId) << kendl);
+ (Void)(kout << "Name: " << process.Name << kendl);
return pid;
}