summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-03-20 20:30:18 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-03-20 20:30:18 +0100
commit1c43fb19cab6eb1121a6d41f4bbe180229a3ae9e (patch)
treeb69b6317a2e1ebeba7958024f9718e7ae705cee0 /dev/Kernel
parent1d07547776d6890c4b4115ddc265b35e68f87936 (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.h2
-rw-r--r--dev/Kernel/FirmwareKit/EFI/API.h2
-rw-r--r--dev/Kernel/FirmwareKit/EFI/EFI.h4
-rw-r--r--dev/Kernel/KernelKit/PE.h134
-rw-r--r--dev/Kernel/SystemKit/SwapDisk.h12
-rw-r--r--dev/Kernel/src/System/SwapDisk.cc10
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