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/Kernel | |
| 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/Kernel')
| -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 |
6 files changed, 81 insertions, 83 deletions
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 |
