diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-20 20:30:18 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-20 20:30:18 +0100 |
| commit | 1c43fb19cab6eb1121a6d41f4bbe180229a3ae9e (patch) | |
| tree | b69b6317a2e1ebeba7958024f9718e7ae705cee0 /dev | |
| parent | 1d07547776d6890c4b4115ddc265b35e68f87936 (diff) | |
Refactored BootKit and DiskImage framework, minor kernel fixes
- Refactored BootKit classes:
- Renamed `BTextWriter` → `BootTextWriter`
- Renamed `BFileReader` → `BootFileReader`
- Improved consistency across `BootKit.h`, `BootThread.cc`, and related files.
- Updated NetBoot module:
- Standardized text writer usage.
- Improved error handling for missing patches and EEPROM flash.
- DiskImage framework improvements:
- Introduced `DI_DISK_IMAGE` struct.
- Added new `DIFormatDisk()` and `DIFormatNeFS()` functions.
- Improved error handling and structure alignment.
- Kernel enhancements:
- Updated PE loader structures for better readability.
- Renamed PE header fields for consistency.
- Improved SwapDisk API structure (`SwapDiskHdr` → `SWAP_DISK_HEADER`).
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/Boot/BootKit/BootKit.h | 50 | ||||
| -rw-r--r-- | dev/Boot/Mod/NetBoot/NetBoot.cc | 6 | ||||
| -rw-r--r-- | dev/Boot/src/BootFileReader.cc | 16 | ||||
| -rw-r--r-- | dev/Boot/src/BootTextWriter.cc | 12 | ||||
| -rw-r--r-- | dev/Boot/src/BootThread.cc | 44 | ||||
| -rw-r--r-- | dev/Boot/src/HEL/AMD64/BootATA.cc | 2 | ||||
| -rw-r--r-- | dev/Boot/src/HEL/AMD64/BootEFI.cc | 4 | ||||
| -rw-r--r-- | dev/Boot/src/HEL/ARM64/BootEFI.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/CFKit/Utils.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/FirmwareKit/EFI/API.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/FirmwareKit/EFI/EFI.h | 4 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/PE.h | 134 | ||||
| -rw-r--r-- | dev/Kernel/SystemKit/SwapDisk.h | 12 | ||||
| -rw-r--r-- | dev/Kernel/src/System/SwapDisk.cc | 10 |
14 files changed, 149 insertions, 151 deletions
diff --git a/dev/Boot/BootKit/BootKit.h b/dev/Boot/BootKit/BootKit.h index ebaeeb7c..847a7e83 100644 --- a/dev/Boot/BootKit/BootKit.h +++ b/dev/Boot/BootKit/BootKit.h @@ -45,8 +45,8 @@ namespace EFI namespace Boot { - class BTextWriter; - class BFileReader; + class BootTextWriter; + class BootFileReader; class BootThread; class BVersionString; @@ -62,31 +62,31 @@ namespace Boot * @brief BootKit Text Writer class * Writes to UEFI StdOut. */ - class BTextWriter final + class BootTextWriter final { - BTextWriter& _Write(const Long& num); + BootTextWriter& _Write(const Long& num); public: - BTextWriter& Write(const Long& num); - BTextWriter& Write(const Char* str); - BTextWriter& Write(const CharacterTypeUTF16* str); - BTextWriter& WriteCharacter(CharacterTypeUTF16 c); - BTextWriter& Write(const UChar* str); + BootTextWriter& Write(const Long& num); + BootTextWriter& Write(const Char* str); + BootTextWriter& Write(const CharacterTypeUTF16* str); + BootTextWriter& WriteCharacter(CharacterTypeUTF16 c); + BootTextWriter& Write(const UChar* str); template <typename T> - BTextWriter& operator<<(T elem) + BootTextWriter& operator<<(T elem) { this->Write(elem); return *this; } public: - explicit BTextWriter() = default; - ~BTextWriter() = default; + explicit BootTextWriter() = default; + ~BootTextWriter() = default; public: - BTextWriter& operator=(const BTextWriter&) = default; - BTextWriter(const BTextWriter&) = default; + BootTextWriter& operator=(const BootTextWriter&) = default; + BootTextWriter(const BootTextWriter&) = default; }; NeOS::SizeT BCopyMem(CharacterTypeUTF16* dest, CharacterTypeUTF16* src, const NeOS::SizeT len); @@ -105,12 +105,12 @@ namespace Boot * @brief BootKit File Reader class * Reads the Firmware Boot partition and filesystem. */ - class BFileReader final + class BootFileReader final { public: - explicit BFileReader(const CharacterTypeUTF16* path, - EfiHandlePtr ImageHandle); - ~BFileReader(); + explicit BootFileReader(const CharacterTypeUTF16* path, + EfiHandlePtr ImageHandle); + ~BootFileReader(); public: Void ReadAll(SizeT until, SizeT chunk = kib_cast(4), UIntPtr out_address = 0UL); @@ -139,14 +139,14 @@ namespace Boot UInt64& Size(); public: - BFileReader& operator=(const BFileReader&) = default; - BFileReader(const BFileReader&) = default; + BootFileReader& operator=(const BootFileReader&) = default; + BootFileReader(const BootFileReader&) = default; private: Int32 mErrorCode{kOperationOkay}; VoidPtr mBlob{nullptr}; CharacterTypeUTF16 mPath[kPathLen]; - BTextWriter mWriter; + BootTextWriter mWriter; EfiFileProtocol* mFile{nullptr}; UInt64 mSizeFile{0}; EfiFileProtocol* mRootFs; @@ -240,7 +240,7 @@ namespace Boot NEFS_ROOT_PARTITION_BLOCK* blockPart = reinterpret_cast<NEFS_ROOT_PARTITION_BLOCK*>(buf); - BTextWriter writer; + BootTextWriter writer; for (SizeT indexMag = 0UL; indexMag < kNeFSIdentLen; ++indexMag) { @@ -279,8 +279,8 @@ namespace Boot if (!blob) return NO; - Lba startLba = part.StartCatalog; - BTextWriter writer; + Lba startLba = part.StartCatalog; + BootTextWriter writer; NEFS_CATALOG_STRUCT catalogKind{0}; @@ -363,7 +363,7 @@ namespace Boot fDiskDev.Write((Char*)&part, sizeof(NEFS_ROOT_PARTITION_BLOCK)); - BTextWriter writer; + BootTextWriter writer; writer << "BootZ: Partition name: " << part.PartitionName << "\r"; writer << "BootZ: Start: " << part.StartCatalog << "\r"; diff --git a/dev/Boot/Mod/NetBoot/NetBoot.cc b/dev/Boot/Mod/NetBoot/NetBoot.cc index ec14aa72..adb11974 100644 --- a/dev/Boot/Mod/NetBoot/NetBoot.cc +++ b/dev/Boot/Mod/NetBoot/NetBoot.cc @@ -19,21 +19,21 @@ EXTERN_C Int32 ModuleMain(NeOS::HEL::BootInfoHeader* handover) if (inet.PatchLength < 0) { - Boot::BTextWriter writer; + Boot::BootTextWriter writer; writer.Write("NetBootLauncher: No Patch attached to packet.\r"); return kEfiFail; } else if (inet.Preflight) { - Boot::BTextWriter writer; + Boot::BootTextWriter writer; writer.Write("NetBootLauncher: Preflight over preflight response.\r"); return kEfiFail; } else if (inet.EEPROM) { - Boot::BTextWriter writer; + Boot::BootTextWriter writer; writer.Write("NetBootLauncher: EEPROM flash not available for now.\r"); return kEfiFail; diff --git a/dev/Boot/src/BootFileReader.cc b/dev/Boot/src/BootFileReader.cc index 80ae46a2..4712374e 100644 --- a/dev/Boot/src/BootFileReader.cc +++ b/dev/Boot/src/BootFileReader.cc @@ -22,7 +22,7 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// /// /// -/// @name BFileReader class +/// @name BootFileReader class /// @brief Reads the file as a blob. /// /// @@ -31,8 +31,8 @@ /*** @brief File Reader constructor. */ -Boot::BFileReader::BFileReader(const CharacterTypeUTF16* path, - EfiHandlePtr ImageHandle) +Boot::BootFileReader::BootFileReader(const CharacterTypeUTF16* path, + EfiHandlePtr ImageHandle) { if (path != nullptr) { @@ -98,7 +98,7 @@ Boot::BFileReader::BFileReader(const CharacterTypeUTF16* path, mErrorCode = kOperationOkay; } -Boot::BFileReader::~BFileReader() +Boot::BootFileReader::~BootFileReader() { if (this->mFile) { @@ -126,7 +126,7 @@ Boot::BFileReader::~BFileReader() @param **readUntil** size of file @param **chunkToRead** chunk to read each time. */ -Void Boot::BFileReader::ReadAll(SizeT readUntil, SizeT chunkToRead, UIntPtr out_address) +Void Boot::BootFileReader::ReadAll(SizeT readUntil, SizeT chunkToRead, UIntPtr out_address) { UInt32 szInfo = sizeof(EfiFileInfo); @@ -186,21 +186,21 @@ Void Boot::BFileReader::ReadAll(SizeT readUntil, SizeT chunkToRead, UIntPtr out_ /// @brief error code getter. /// @return the error code. -Int32& Boot::BFileReader::Error() +Int32& Boot::BootFileReader::Error() { return mErrorCode; } /// @brief blob getter. /// @return the blob. -VoidPtr Boot::BFileReader::Blob() +VoidPtr Boot::BootFileReader::Blob() { return mBlob; } /// @breif Size getter. /// @return the size of the file. -UInt64& Boot::BFileReader::Size() +UInt64& Boot::BootFileReader::Size() { return mSizeFile; } diff --git a/dev/Boot/src/BootTextWriter.cc b/dev/Boot/src/BootTextWriter.cc index 5bebdb10..b58d3429 100644 --- a/dev/Boot/src/BootTextWriter.cc +++ b/dev/Boot/src/BootTextWriter.cc @@ -23,7 +23,7 @@ /** @brief puts wrapper over EFI ConOut. */ -Boot::BTextWriter& Boot::BTextWriter::Write(const CharacterTypeUTF16* str) +Boot::BootTextWriter& Boot::BootTextWriter::Write(const CharacterTypeUTF16* str) { #ifdef __DEBUG__ if (!str || *str == 0) @@ -55,7 +55,7 @@ Boot::BTextWriter& Boot::BTextWriter::Write(const CharacterTypeUTF16* str) /// @brief UTF-8 equivalent of Write (UTF-16). /// @param str the input string. -Boot::BTextWriter& Boot::BTextWriter::Write(const Char* str) +Boot::BootTextWriter& Boot::BootTextWriter::Write(const Char* str) { #ifdef __DEBUG__ if (!str || *str == 0) @@ -85,7 +85,7 @@ Boot::BTextWriter& Boot::BTextWriter::Write(const Char* str) return *this; } -Boot::BTextWriter& Boot::BTextWriter::Write(const UChar* str) +Boot::BootTextWriter& Boot::BootTextWriter::Write(const UChar* str) { #ifdef __DEBUG__ if (!str || *str == 0) @@ -118,7 +118,7 @@ Boot::BTextWriter& Boot::BTextWriter::Write(const UChar* str) /** @brief putc wrapper over EFI ConOut. */ -Boot::BTextWriter& Boot::BTextWriter::WriteCharacter(CharacterTypeUTF16 c) +Boot::BootTextWriter& Boot::BootTextWriter::WriteCharacter(CharacterTypeUTF16 c) { #ifdef __DEBUG__ EfiCharType str[2]; @@ -131,7 +131,7 @@ Boot::BTextWriter& Boot::BTextWriter::WriteCharacter(CharacterTypeUTF16 c) return *this; } -Boot::BTextWriter& Boot::BTextWriter::Write(const Long& x) +Boot::BootTextWriter& Boot::BootTextWriter::Write(const Long& x) { #ifdef __DEBUG__ this->_Write(x); @@ -141,7 +141,7 @@ Boot::BTextWriter& Boot::BTextWriter::Write(const Long& x) return *this; } -Boot::BTextWriter& Boot::BTextWriter::_Write(const Long& x) +Boot::BootTextWriter& Boot::BootTextWriter::_Write(const Long& x) { #ifdef __DEBUG__ UInt64 y = (x > 0 ? x : -x) / 16; diff --git a/dev/Boot/src/BootThread.cc b/dev/Boot/src/BootThread.cc index 8b136ba3..ff094f72 100644 --- a/dev/Boot/src/BootThread.cc +++ b/dev/Boot/src/BootThread.cc @@ -30,7 +30,7 @@ namespace Boot // detect the format. const Char* blob_bytes = reinterpret_cast<char*>(fBlob); - BTextWriter writer; + BootTextWriter writer; if (!blob_bytes) { @@ -48,15 +48,15 @@ namespace Boot return; #ifdef __NE_AMD64__ - if (header_ptr->mMachine != kPeMachineAMD64 || - header_ptr->mSignature != kPeSignature) + if (header_ptr->Machine != kPeMachineAMD64 || + header_ptr->Signature != kPeSignature) { writer.Write("BootZ: Not a PE32+ executable.\r"); return; } #elif defined(__NE_ARM64__) - if (header_ptr->mMachine != kPeMachineARM64 || - header_ptr->mSignature != kPeSignature) + if (header_ptr->Machine != kPeMachineARM64 || + header_ptr->Signature != kPeSignature) { writer.Write("BootZ: Not a PE32+ executable.\r"); return; @@ -65,25 +65,25 @@ namespace Boot writer.Write("BootZ: PE32+ executable detected (NeKernel Subsystem).\r"); - auto numSecs = header_ptr->mNumberOfSections; + auto numSecs = header_ptr->NumberOfSections; - writer.Write("BootZ: Major Linker Ver: ").Write(opt_header_ptr->mMajorLinkerVersion).Write("\r"); - writer.Write("BootZ: Minor Linker Ver: ").Write(opt_header_ptr->mMinorLinkerVersion).Write("\r"); - writer.Write("BootZ: Major Subsystem Ver: ").Write(opt_header_ptr->mMajorSubsystemVersion).Write("\r"); - writer.Write("BootZ: Minor Subsystem Ver: ").Write(opt_header_ptr->mMinorSubsystemVersion).Write("\r"); - writer.Write("BootZ: Magic: ").Write(header_ptr->mSignature).Write("\r"); + writer.Write("BootZ: Major Linker Ver: ").Write(opt_header_ptr->MajorLinkerVersion).Write("\r"); + writer.Write("BootZ: Minor Linker Ver: ").Write(opt_header_ptr->MinorLinkerVersion).Write("\r"); + writer.Write("BootZ: Major Subsystem Ver: ").Write(opt_header_ptr->MajorSubsystemVersion).Write("\r"); + writer.Write("BootZ: Minor Subsystem Ver: ").Write(opt_header_ptr->MinorSubsystemVersion).Write("\r"); + writer.Write("BootZ: Magic: ").Write(header_ptr->Signature).Write("\r"); constexpr auto cPageSize = 512; - EfiPhysicalAddress loadStartAddress = opt_header_ptr->mImageBase; - loadStartAddress += opt_header_ptr->mBaseOfData; + EfiPhysicalAddress loadStartAddress = opt_header_ptr->ImageBase; + loadStartAddress += opt_header_ptr->BaseOfData; writer.Write("BootZ: Image base: ").Write(loadStartAddress).Write("\r"); - auto numPages = opt_header_ptr->mSizeOfImage / cPageSize; + auto numPages = opt_header_ptr->SizeOfImage / cPageSize; BS->AllocatePages(AllocateAddress, EfiLoaderData, numPages, &loadStartAddress); - LDR_SECTION_HEADER_PTR sectPtr = (LDR_SECTION_HEADER_PTR)(((Char*)opt_header_ptr) + header_ptr->mSizeOfOptionalHeader); + LDR_SECTION_HEADER_PTR sectPtr = (LDR_SECTION_HEADER_PTR)(((Char*)opt_header_ptr) + header_ptr->SizeOfOptionalHeader); constexpr auto sectionForCode = ".text"; constexpr auto sectionForNewLdr = ".ldr"; @@ -93,14 +93,14 @@ namespace Boot { LDR_SECTION_HEADER_PTR sect = §Ptr[sectIndex]; - SetMem((VoidPtr)(loadStartAddress + sect->mVirtualAddress), 0, sect->mSizeOfRawData); + SetMem((VoidPtr)(loadStartAddress + sect->VirtualAddress), 0, sect->SizeOfRawData); - if (StrCmp(sectionForCode, sect->mName) == 0) + if (StrCmp(sectionForCode, sect->Name) == 0) { - fStartAddress = (VoidPtr)((UIntPtr)loadStartAddress + opt_header_ptr->mAddressOfEntryPoint); + fStartAddress = (VoidPtr)((UIntPtr)loadStartAddress + opt_header_ptr->AddressOfEntryPoint); writer.Write("BootZ: Executable entry address: ").Write((UIntPtr)fStartAddress).Write("\r"); } - else if (StrCmp(sectionForNewLdr, sect->mName) == 0) + else if (StrCmp(sectionForNewLdr, sect->Name) == 0) { struct HANDOVER_INFORMATION_STUB { @@ -108,7 +108,7 @@ namespace Boot UInt32 HandoverType; UInt32 HandoverPad; UInt32 HandoverArch; - }* handover_struc = (struct HANDOVER_INFORMATION_STUB*)((UIntPtr)fBlob + sect->mPointerToRawData); + }* handover_struc = (struct HANDOVER_INFORMATION_STUB*)((UIntPtr)fBlob + sect->PointerToRawData); if (handover_struc->HandoverMagic != kHandoverMagic && handover_struc->HandoverType != HEL::kTypeKernel) @@ -134,9 +134,9 @@ namespace Boot } } - writer.Write("BootZ: Raw offset: ").Write(sect->mPointerToRawData).Write(" of ").Write(sect->mName).Write("\r"); + writer.Write("BootZ: Raw offset: ").Write(sect->PointerToRawData).Write(" of ").Write(sect->Name).Write("\r"); - CopyMem((VoidPtr)(loadStartAddress + sect->mVirtualAddress), (VoidPtr)((UIntPtr)fBlob + sect->mPointerToRawData), sect->mSizeOfRawData); + CopyMem((VoidPtr)(loadStartAddress + sect->VirtualAddress), (VoidPtr)((UIntPtr)fBlob + sect->PointerToRawData), sect->SizeOfRawData); } } else if (blob_bytes[0] == kPefMagic[0] && diff --git a/dev/Boot/src/HEL/AMD64/BootATA.cc b/dev/Boot/src/HEL/AMD64/BootATA.cc index 0cebdb9d..0ec6ab18 100644 --- a/dev/Boot/src/HEL/AMD64/BootATA.cc +++ b/dev/Boot/src/HEL/AMD64/BootATA.cc @@ -67,7 +67,7 @@ Boolean boot_ata_init(UInt16 Bus, UInt8 Drive, UInt16& OutBus, UInt8& OutMaster) if (boot_ata_detected()) return true; - BTextWriter writer; + BootTextWriter writer; UInt16 IO = Bus; diff --git a/dev/Boot/src/HEL/AMD64/BootEFI.cc b/dev/Boot/src/HEL/AMD64/BootEFI.cc index 56315475..11b70b81 100644 --- a/dev/Boot/src/HEL/AMD64/BootEFI.cc +++ b/dev/Boot/src/HEL/AMD64/BootEFI.cc @@ -202,7 +202,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr image_handle, handover_hdr->f_FirmwareCustomTables[0] = (VoidPtr)BS; handover_hdr->f_FirmwareCustomTables[1] = (VoidPtr)ST; - Boot::BFileReader reader_syschk(L"syschk.sys", image_handle); + Boot::BootFileReader reader_syschk(L"syschk.sys", image_handle); reader_syschk.ReadAll(0); Boot::BootThread* syschk_thread = nullptr; @@ -279,7 +279,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr image_handle, ST->RuntimeServices->SetVariable(L"/props/boot_path", kEfiGlobalNamespaceVarGUID, &attr, &kernel_path_sz, kernel_path); } - Boot::BFileReader reader_kernel(kernel_path, image_handle); + Boot::BootFileReader reader_kernel(kernel_path, image_handle); reader_kernel.ReadAll(0); diff --git a/dev/Boot/src/HEL/ARM64/BootEFI.cc b/dev/Boot/src/HEL/ARM64/BootEFI.cc index d3d72ff6..9df1b2d4 100644 --- a/dev/Boot/src/HEL/ARM64/BootEFI.cc +++ b/dev/Boot/src/HEL/ARM64/BootEFI.cc @@ -196,7 +196,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr image_handle, // Assign to global 'kHandoverHeader'. - Boot::BFileReader reader_kernel(L"neoskrnl.exe", image_handle); + Boot::BootFileReader reader_kernel(L"neoskrnl.exe", image_handle); reader_kernel.ReadAll(0); diff --git a/dev/Kernel/CFKit/Utils.h b/dev/Kernel/CFKit/Utils.h index 4bf0696b..b8f16164 100644 --- a/dev/Kernel/CFKit/Utils.h +++ b/dev/Kernel/CFKit/Utils.h @@ -34,7 +34,7 @@ namespace CFKit if (!exec) return nullptr; - return (LDR_OPTIONAL_HEADER_PTR)(VoidPtr)(&exec->mCharacteristics + 1); + return (LDR_OPTIONAL_HEADER_PTR)(VoidPtr)(&exec->Characteristics + 1); } /// @brief Finds the PE header inside the blob. diff --git a/dev/Kernel/FirmwareKit/EFI/API.h b/dev/Kernel/FirmwareKit/EFI/API.h index 50b6ea19..34ff212e 100644 --- a/dev/Kernel/FirmwareKit/EFI/API.h +++ b/dev/Kernel/FirmwareKit/EFI/API.h @@ -17,7 +17,7 @@ #ifdef __BOOTZ__ // forward decl. -class BTextWriter; +class BootTextWriter; #define __BOOTKIT_NO_INCLUDE__ 1 diff --git a/dev/Kernel/FirmwareKit/EFI/EFI.h b/dev/Kernel/FirmwareKit/EFI/EFI.h index c0c341b7..ff97f7d6 100644 --- a/dev/Kernel/FirmwareKit/EFI/EFI.h +++ b/dev/Kernel/FirmwareKit/EFI/EFI.h @@ -390,14 +390,14 @@ typedef struct UInt32 SizeOfInfo; UIntPtr FrameBufferBase; UInt32 FrameBufferSize; -} EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE; +} EfiGraphicsOutputProtocolMode; typedef struct EfiGraphicsOutputProtocol { EfiGraphicsOutputProtocolQueryMode QueryMode; EfiGraphicsOutputProtocolSetMode SetMode; EfiGraphicsOutputProtocolBlt Blt; - EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE* Mode; + EfiGraphicsOutputProtocolMode* Mode; } EfiGraphicsOutputProtocol; typedef struct EfiLoadImageProtocol diff --git a/dev/Kernel/KernelKit/PE.h b/dev/Kernel/KernelKit/PE.h index a4ae5c4a..dbcf2ded 100644 --- a/dev/Kernel/KernelKit/PE.h +++ b/dev/Kernel/KernelKit/PE.h @@ -29,62 +29,62 @@ typedef struct LDR_EXEC_HEADER final { - NeOS::UInt32 mSignature; - NeOS::UInt16 mMachine; - NeOS::UInt16 mNumberOfSections; - NeOS::UInt32 mTimeDateStamp; - NeOS::UInt32 mPointerToSymbolTable; - NeOS::UInt32 mNumberOfSymbols; - NeOS::UInt16 mSizeOfOptionalHeader; - NeOS::UInt16 mCharacteristics; + NeOS::UInt32 Signature; + NeOS::UInt16 Machine; + NeOS::UInt16 NumberOfSections; + NeOS::UInt32 TimeDateStamp; + NeOS::UInt32 PointerToSymbolTable; + NeOS::UInt32 NumberOfSymbols; + NeOS::UInt16 SizeOfOptionalHeader; + NeOS::UInt16 Characteristics; } LDR_EXEC_HEADER, *LDR_EXEC_HEADER_PTR; typedef struct LDR_OPTIONAL_HEADER final { - NeOS::UInt16 mMagic; // 0x010b - PE32, 0x020b - PE32+ (64 bit) - NeOS::UInt8 mMajorLinkerVersion; - NeOS::UInt8 mMinorLinkerVersion; - NeOS::UInt32 mSizeOfCode; - NeOS::UInt32 mSizeOfInitializedData; - NeOS::UInt32 mSizeOfUninitializedData; - NeOS::UInt32 mAddressOfEntryPoint; - NeOS::UInt32 mBaseOfCode; - NeOS::UInt32 mBaseOfData; - NeOS::UInt32 mImageBase; - NeOS::UInt32 mSectionAlignment; - NeOS::UInt32 mFileAlignment; - NeOS::UInt16 mMajorOperatingSystemVersion; - NeOS::UInt16 mMinorOperatingSystemVersion; - NeOS::UInt16 mMajorImageVersion; - NeOS::UInt16 mMinorImageVersion; - NeOS::UInt16 mMajorSubsystemVersion; - NeOS::UInt16 mMinorSubsystemVersion; - NeOS::UInt32 mWin32VersionValue; - NeOS::UInt32 mSizeOfImage; - NeOS::UInt32 mSizeOfHeaders; - NeOS::UInt32 mCheckSum; - NeOS::UInt16 mSubsystem; - NeOS::UInt16 mDllCharacteristics; - NeOS::UInt32 mSizeOfStackReserve; - NeOS::UInt32 mSizeOfStackCommit; - NeOS::UInt32 mSizeOfHeapReserve; - NeOS::UInt32 mSizeOfHeapCommit; - NeOS::UInt32 mLoaderFlags; - NeOS::UInt32 mNumberOfRvaAndSizes; + NeOS::UInt16 Magic; // 0x010b - PE32, 0x020b - PE32+ (64 bit) + NeOS::UInt8 MajorLinkerVersion; + NeOS::UInt8 MinorLinkerVersion; + NeOS::UInt32 SizeOfCode; + NeOS::UInt32 SizeOfInitializedData; + NeOS::UInt32 SizeOfUninitializedData; + NeOS::UInt32 AddressOfEntryPoint; + NeOS::UInt32 BaseOfCode; + NeOS::UInt32 BaseOfData; + NeOS::UInt32 ImageBase; + NeOS::UInt32 SectionAlignment; + NeOS::UInt32 FileAlignment; + NeOS::UInt16 MajorOperatingSystemVersion; + NeOS::UInt16 MinorOperatingSystemVersion; + NeOS::UInt16 MajorImageVersion; + NeOS::UInt16 MinorImageVersion; + NeOS::UInt16 MajorSubsystemVersion; + NeOS::UInt16 MinorSubsystemVersion; + NeOS::UInt32 Win32VersionValue; + NeOS::UInt32 SizeOfImage; + NeOS::UInt32 SizeOfHeaders; + NeOS::UInt32 CheckSum; + NeOS::UInt16 Subsystem; + NeOS::UInt16 DllCharacteristics; + NeOS::UInt32 SizeOfStackReserve; + NeOS::UInt32 SizeOfStackCommit; + NeOS::UInt32 SizeOfHeapReserve; + NeOS::UInt32 SizeOfHeapCommit; + NeOS::UInt32 LoaderFlags; + NeOS::UInt32 NumberOfRvaAndSizes; } LDR_OPTIONAL_HEADER, *LDR_OPTIONAL_HEADER_PTR; typedef struct LDR_SECTION_HEADER final { - NeOS::Char mName[8]; - NeOS::UInt32 mVirtualSize; - NeOS::UInt32 mVirtualAddress; - NeOS::UInt32 mSizeOfRawData; - NeOS::UInt32 mPointerToRawData; - NeOS::UInt32 mPointerToRelocations; - NeOS::UInt32 mPointerToLineNumbers; - NeOS::UInt16 mNumberOfRelocations; - NeOS::UInt16 mNumberOfLinenumbers; - NeOS::UInt32 mCharacteristics; + NeOS::Char Name[8]; + NeOS::UInt32 VirtualSize; + NeOS::UInt32 VirtualAddress; + NeOS::UInt32 SizeOfRawData; + NeOS::UInt32 PointerToRawData; + NeOS::UInt32 PointerToRelocations; + NeOS::UInt32 PointerToLineNumbers; + NeOS::UInt16 NumberOfRelocations; + NeOS::UInt16 NumberOfLinenumbers; + NeOS::UInt32 Characteristics; } LDR_SECTION_HEADER, *LDR_SECTION_HEADER_PTR; enum kExecDataDirParams @@ -97,29 +97,29 @@ enum kExecDataDirParams typedef struct LDR_EXPORT_DIRECTORY { - NeOS::UInt32 mCharacteristics; - NeOS::UInt32 mTimeDateStamp; - NeOS::UInt16 mMajorVersion; - NeOS::UInt16 mMinorVersion; - NeOS::UInt32 mName; - NeOS::UInt32 mBase; - NeOS::UInt32 mNumberOfFunctions; - NeOS::UInt32 mNumberOfNames; - NeOS::UInt32 mAddressOfFunctions; // export table rva - NeOS::UInt32 mAddressOfNames; - NeOS::UInt32 mAddressOfNameOrdinal; // ordinal table rva + NeOS::UInt32 Characteristics; + NeOS::UInt32 TimeDateStamp; + NeOS::UInt16 MajorVersion; + NeOS::UInt16 MinorVersion; + NeOS::UInt32 Name; + NeOS::UInt32 Base; + NeOS::UInt32 NumberOfFunctions; + NeOS::UInt32 NumberOfNames; + NeOS::UInt32 AddressOfFunctions; // export table rva + NeOS::UInt32 AddressOfNames; + NeOS::UInt32 AddressOfNameOrdinal; // ordinal table rva } LDR_EXPORT_DIRECTORY, *LDR_EXPORT_DIRECTORY_PTR; typedef struct LDR_IMPORT_DIRECTORY { union { - NeOS::UInt32 mCharacteristics; - NeOS::UInt32 mOriginalFirstThunk; + NeOS::UInt32 Characteristics; + NeOS::UInt32 OriginalFirstThunk; }; - NeOS::UInt32 mTimeDateStamp; - NeOS::UInt32 mForwarderChain; - NeOS::UInt32 mNameRva; - NeOS::UInt32 mThunkTableRva; + NeOS::UInt32 TimeDateStamp; + NeOS::UInt32 ForwarderChain; + NeOS::UInt32 NameRva; + NeOS::UInt32 ThunkTableRva; } LDR_IMPORT_DIRECTORY, *LDR_IMPORT_DIRECTORY_PTR; typedef struct LDR_DATA_DIRECTORY @@ -130,8 +130,8 @@ typedef struct LDR_DATA_DIRECTORY typedef struct LDR_IMAGE_HEADER { - LDR_EXEC_HEADER mHeader; - LDR_OPTIONAL_HEADER mOptHdr; + LDR_EXEC_HEADER Header; + LDR_OPTIONAL_HEADER OptHdr; } LDR_IMAGE_HEADER, *LDR_IMAGE_HEADER_PTR; enum diff --git a/dev/Kernel/SystemKit/SwapDisk.h b/dev/Kernel/SystemKit/SwapDisk.h index e46b57ea..b902c5e4 100644 --- a/dev/Kernel/SystemKit/SwapDisk.h +++ b/dev/Kernel/SystemKit/SwapDisk.h @@ -18,7 +18,7 @@ namespace NeOS { - struct SwapDiskHdr; + struct SWAP_DISK_HEADER; /// @brief This class is a disk swap delegate for any data. available as a syscall too. class SwapDisk final @@ -29,11 +29,11 @@ namespace NeOS NE_COPY_DEFAULT(SwapDisk); - BOOL Write(const Char* fork_name, const SizeT fork_name_len, SwapDiskHdr* data, const SizeT data_len); - SwapDiskHdr* Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len); + BOOL Write(const Char* fork_name, const SizeT fork_name_len, SWAP_DISK_HEADER* data, const SizeT data_len); + SWAP_DISK_HEADER* Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len); }; - typedef struct SwapDiskHdr + typedef struct SWAP_DISK_HEADER { UInt32 fMagic; SizeT fHeaderSz; @@ -42,7 +42,5 @@ namespace NeOS UInt64 fVirtualAddress; SizeT fBlobSz; Char fBlob[]; - } PACKED SwapDiskHdr; - - typedef SwapDiskHdr* SwapDiskHdrRef; + } PACKED SWAP_DISK_HEADER; } // namespace NeOS diff --git a/dev/Kernel/src/System/SwapDisk.cc b/dev/Kernel/src/System/SwapDisk.cc index 1d2f1da4..921ea86d 100644 --- a/dev/Kernel/src/System/SwapDisk.cc +++ b/dev/Kernel/src/System/SwapDisk.cc @@ -9,7 +9,7 @@ namespace NeOS { - BOOL SwapDisk::Write(const Char* fork_name, const SizeT fork_name_len, SwapDiskHdrRef data, const SizeT data_len) + BOOL SwapDisk::Write(const Char* fork_name, const SizeT fork_name_len, SWAP_DISK_HEADER* data, const SizeT data_len) { if (!fork_name || !fork_name_len) return NO; @@ -22,7 +22,7 @@ namespace NeOS FileStream file(kSwapPageFile, "wb"); - auto ret = file.Write(fork_name, data, sizeof(SwapDiskHdr) + data_len); + auto ret = file.Write(fork_name, data, sizeof(SWAP_DISK_HEADER) + data_len); if (ret.Error()) return NO; @@ -30,7 +30,7 @@ namespace NeOS return YES; } - SwapDiskHdrRef SwapDisk::Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len) + SWAP_DISK_HEADER* SwapDisk::Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len) { if (!fork_name || !fork_name_len) return nullptr; @@ -40,8 +40,8 @@ namespace NeOS FileStream file(kSwapPageFile, "rb"); - VoidPtr blob = file.Read(fork_name, sizeof(SwapDiskHdr) + data_len); + VoidPtr blob = file.Read(fork_name, sizeof(SWAP_DISK_HEADER) + data_len); - return (SwapDiskHdrRef)blob; + return (SWAP_DISK_HEADER*)blob; } } // namespace NeOS |
