From e0633b442140d49e08af6759bd07c89e16ef0e2a Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 5 Jan 2025 12:19:58 +0100 Subject: ADD: Ran format command and refactors too. Signed-off-by: Amlal El Mahrouss --- dev/Boot/BootKit/BootKit.h | 64 ++++++++++++++++++++------------ dev/Boot/BootKit/BootThread.h | 43 +++++++++++++++++++++ dev/Boot/BootKit/Thread.h | 43 --------------------- dev/Boot/Mod/SysChk/Module.cc | 4 +- dev/Boot/amd64-desktop.make | 2 +- dev/Boot/arm64-desktop.make | 2 +- dev/Boot/arm64-mobile.make | 2 +- dev/Boot/src/BootThread.cc | 2 +- dev/Boot/src/HEL/AMD64/EFIBootStartup.cc | 2 +- dev/Boot/src/HEL/ARM64/EFIBootStartup.cc | 2 +- 10 files changed, 92 insertions(+), 74 deletions(-) create mode 100644 dev/Boot/BootKit/BootThread.h delete mode 100644 dev/Boot/BootKit/Thread.h (limited to 'dev/Boot') 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 + 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(const_cast(kBlockName)), StrLen(kBlockName)); CopyMem(epm_boot.Magic, reinterpret_cast(const_cast(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/BootThread.h b/dev/Boot/BootKit/BootThread.h new file mode 100644 index 00000000..e15f7365 --- /dev/null +++ b/dev/Boot/BootKit/BootThread.h @@ -0,0 +1,43 @@ +/* ------------------------------------------- + + Copyright (C) 2024, Theater Quality Corp, all rights reserved. + +------------------------------------------- */ + +#pragma once + +#include +#include +#include + +namespace Boot +{ + using namespace Kernel; + + class BootThread; + + /// @brief Bootloader Thread class. + class BootThread final + { + public: + explicit BootThread() = delete; + ~BootThread() = default; + + explicit BootThread(Kernel::VoidPtr blob); + + BootThread& operator=(const BootThread&) = default; + BootThread(const BootThread&) = default; + + Int32 Start(HEL::BootInfoHeader* handover, BOOL is_own_stack); + void SetName(const char* name); + const char* GetName(); + bool IsValid(); + + private: + Char fBlobName[255] = {"BootThread"}; + VoidPtr fStartAddress{nullptr}; + VoidPtr fBlob{nullptr}; + UInt8* fStack{nullptr}; + HEL::BootInfoHeader* fHandover{nullptr}; + }; +} // namespace Boot diff --git a/dev/Boot/BootKit/Thread.h b/dev/Boot/BootKit/Thread.h deleted file mode 100644 index 2f6e5b32..00000000 --- a/dev/Boot/BootKit/Thread.h +++ /dev/null @@ -1,43 +0,0 @@ -/* ------------------------------------------- - - Copyright (C) 2024, Theater Quality Corp, all rights reserved. - -------------------------------------------- */ - -#pragma once - -#include -#include -#include - -namespace Boot -{ - using namespace Kernel; - - class BootThread; - - /// @brief Bootloader Thread class. - class BootThread final - { - public: - explicit BootThread() = delete; - ~BootThread() = default; - - explicit BootThread(Kernel::VoidPtr blob); - - BootThread& operator=(const BootThread&) = default; - BootThread(const BootThread&) = default; - - Int32 Start(HEL::BootInfoHeader* handover, BOOL is_own_stack); - void SetName(const char* name); - const char* GetName(); - bool IsValid(); - - private: - Char fBlobName[255] = {"BootThread"}; - VoidPtr fStartAddress{nullptr}; - VoidPtr fBlob{nullptr}; - UInt8* fStack{nullptr}; - HEL::BootInfoHeader* fHandover{nullptr}; - }; -} // namespace Boot 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 #include #include -#include +#include #include 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 +#include #include #include #include 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 #include #include -#include +#include #include // 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 #include -#include +#include #include #ifndef kExpectedWidth -- cgit v1.2.3