diff options
Diffstat (limited to 'dev/kernel')
| -rw-r--r-- | dev/kernel/FSKit/HeFS.h | 4 | ||||
| -rw-r--r-- | dev/kernel/FirmwareKit/EPM.h | 11 | ||||
| -rw-r--r-- | dev/kernel/FirmwareKit/GPT.h | 16 | ||||
| -rw-r--r-- | dev/kernel/FirmwareKit/VEPM.h | 29 | ||||
| -rw-r--r-- | dev/kernel/KernelKit/DriveMgr.h | 2 | ||||
| -rw-r--r-- | dev/kernel/amd64-ci.make | 2 | ||||
| -rw-r--r-- | dev/kernel/amd64-desktop.make | 2 | ||||
| -rw-r--r-- | dev/kernel/arm64-desktop.make | 2 | ||||
| -rw-r--r-- | dev/kernel/kernel_rsrc.rsrc | 2 | ||||
| -rw-r--r-- | dev/kernel/src/FS/HeFS.cc | 8 |
10 files changed, 52 insertions, 26 deletions
diff --git a/dev/kernel/FSKit/HeFS.h b/dev/kernel/FSKit/HeFS.h index 4a50f438..65594b99 100644 --- a/dev/kernel/FSKit/HeFS.h +++ b/dev/kernel/FSKit/HeFS.h @@ -115,7 +115,7 @@ inline constexpr ATime kHeFSTimeMax = 0xFFFFFFFFFFFFFFFF; /// @details This structure is used to store the file information of a file.
/// @note The index node is a special type of INode that contains the file information.
/// @note The index node is used to store the file information of a file.
-struct PACKED HEFS_INDEX_NODE final
+struct PACKED ALIGN(8) HEFS_INDEX_NODE final
{
Kernel::Utf16Char fName[kHeFSFileNameLen]; /// @brief File name.
Kernel::UInt32 fFlags; /// @brief File flags.
@@ -147,7 +147,7 @@ enum /// @brief HeFS directory node.
/// @details This structure is used to store the directory information of a file.
/// @note The directory node is a special type of INode that contains the directory entries.
-struct PACKED HEFS_INDEX_NODE_DIRECTORY final
+struct PACKED ALIGN(8) HEFS_INDEX_NODE_DIRECTORY final
{
Kernel::Utf16Char fName[kHeFSFileNameLen]; /// @brief Directory name.
diff --git a/dev/kernel/FirmwareKit/EPM.h b/dev/kernel/FirmwareKit/EPM.h index 548bb9a7..6db82506 100644 --- a/dev/kernel/FirmwareKit/EPM.h +++ b/dev/kernel/FirmwareKit/EPM.h @@ -80,8 +80,8 @@ typedef struct EPM_GUID */ struct PACKED EPM_PART_BLOCK { - Kernel::Char Magic[kEPMMagicLength]; - Kernel::Char Name[kEPMNameLength]; + Kernel::Char Magic[kEPMMagicLength] = {0}; + Kernel::Char Name[kEPMNameLength] = {0}; EPM_GUID Guid; Kernel::Int32 Version; Kernel::Int64 NumBlocks; @@ -108,4 +108,11 @@ enum kEPMInvalidOS = 0xff, }; +inline EPM_GUID kEPMNilGuid = { + 0x0U, + 0x0U, + 0x0U, + { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } +}; + #endif // ifndef FIRMWAREKIT_EPM_H diff --git a/dev/kernel/FirmwareKit/GPT.h b/dev/kernel/FirmwareKit/GPT.h index aab6b650..4be1fed2 100644 --- a/dev/kernel/FirmwareKit/GPT.h +++ b/dev/kernel/FirmwareKit/GPT.h @@ -17,19 +17,9 @@ namespace Kernel { - struct GPT_GUID; struct GPT_PARTITION_TABLE; struct GPT_PARTITION_ENTRY; - /// @brief GPT GUID structure. - typedef struct GPT_GUID - { - Kernel::UInt32 Data1; - Kernel::UInt16 Data2; - Kernel::UInt16 Data3; - Kernel::UInt8 Data4[8]; - } GPT_GUID; - struct PACKED GPT_PARTITION_TABLE final { Char Signature[kMagicLenGPT]; @@ -41,7 +31,7 @@ namespace Kernel UInt64 LBAAltHeader; UInt64 FirstGPTEntry; UInt64 LastGPTEntry; - GPT_GUID Guid; + EfiGUID Guid; UInt64 StartingLBA; UInt32 NumPartitionEntries; UInt32 SizeOfEntries; @@ -51,8 +41,8 @@ namespace Kernel struct PACKED GPT_PARTITION_ENTRY { - GPT_GUID PartitionTypeGUID; - GPT_GUID UniquePartitionGUID; + EfiGUID PartitionTypeGUID; + EfiGUID UniquePartitionGUID; UInt64 StartLBA; UInt64 EndLBA; UInt64 Attributes; diff --git a/dev/kernel/FirmwareKit/VEPM.h b/dev/kernel/FirmwareKit/VEPM.h index 9d8fa4d4..2b95e12d 100644 --- a/dev/kernel/FirmwareKit/VEPM.h +++ b/dev/kernel/FirmwareKit/VEPM.h @@ -8,7 +8,36 @@ #define FIRMWAREKIT_VEPM_H #include <FirmwareKit/EPM.h> +#include <FirmwareKit/EFI.h> /// @brief The Virtual Explicit Partition Map scheme extension. +#ifdef __NE_VEPM__ +#ifdef kEPMMagic +#undef kEPMMagic +#endif // kEPMMagic + +#define kEPMMagic "EPMVM" + +/// @brief VEPM GUID. +/// @note This is the GUID used to identify a VEPM partition. +inline EPM_GUID kVEPMGuidEPM = { + 0x9a1b3f2e, + 0x4c3f, + 0x4d52, + { 0xa7, 0x83, 0x9c, 0x21, 0x7b, 0x5e, 0x4d, 0xac } +}; + +/// @brief VEPM GUID. +/// @note This is the GUID used to identify a VEPM partition (EFI version) +inline EfiGUID kVEPMGuidEFI = { + 0x9a1b3f2e, + 0x4c3f, + 0x4d52, + { 0xa7, 0x83, 0x9c, 0x21, 0x7b, 0x5e, 0x4d, 0xac } +}; + +#define kVEPMGuidStr "9a1b3f2e-4c3f-4d52-a783-9c217b5e4dac" +#endif // __NE_VEPM__ + #endif // FIRMWAREKIT_VEPM_H
\ No newline at end of file diff --git a/dev/kernel/KernelKit/DriveMgr.h b/dev/kernel/KernelKit/DriveMgr.h index 36aa635e..9dc8162b 100644 --- a/dev/kernel/KernelKit/DriveMgr.h +++ b/dev/kernel/KernelKit/DriveMgr.h @@ -39,7 +39,7 @@ namespace Kernel /// Storage flags, combine with types. kReadOnlyDrive = 0x10, // Read only drive kEPMDrive = 0x11, // Explicit Partition Map. - kEPTDrive = 0x12, // ESP w/ EPM partition. + kVEPMDrive = 0x12, // ESP w/ EPM partition. kMBRDrive = 0x13, // PC classic partition scheme kGPTDrive = 0x14, // PC new partition scheme kUnformattedDrive = 0x15, diff --git a/dev/kernel/amd64-ci.make b/dev/kernel/amd64-ci.make index 7748fc7c..4fb87ee1 100644 --- a/dev/kernel/amd64-ci.make +++ b/dev/kernel/amd64-ci.make @@ -35,7 +35,7 @@ LDFLAGS = -e hal_init_platform --subsystem=17 --image-base 0x4000000 LDOBJ = obj/*.obj # This file is the Kernel, responsible of task, memory, driver, sci, disk and device management. -KERNEL_IMG = vmkrnl.efi +KERNEL_IMG = krnl.efi .PHONY: error error: diff --git a/dev/kernel/amd64-desktop.make b/dev/kernel/amd64-desktop.make index ca31d130..7a901229 100644 --- a/dev/kernel/amd64-desktop.make +++ b/dev/kernel/amd64-desktop.make @@ -37,7 +37,7 @@ LDFLAGS = -e hal_init_platform --subsystem=17 --image-base 0x10000000 LDOBJ = obj/*.obj # This file is the Kernel, responsible of task, memory, driver, sci, disk and device management. -KERNEL_IMG = vmkrnl.efi +KERNEL_IMG = krnl.efi .PHONY: error error: diff --git a/dev/kernel/arm64-desktop.make b/dev/kernel/arm64-desktop.make index ec2a04ce..8a1a8c19 100644 --- a/dev/kernel/arm64-desktop.make +++ b/dev/kernel/arm64-desktop.make @@ -23,7 +23,7 @@ LDFLAGS = -subsystem:efi_application -entry:hal_init_platform /nodefaultlib LDOBJ = obj/*.obj # This file is the Kernel, responsible of task management and memory. -KERNEL = vmkrnl.efi +KERNEL = krnl.efi .PHONY: error error: diff --git a/dev/kernel/kernel_rsrc.rsrc b/dev/kernel/kernel_rsrc.rsrc index ab149b31..69922999 100644 --- a/dev/kernel/kernel_rsrc.rsrc +++ b/dev/kernel/kernel_rsrc.rsrc @@ -13,7 +13,7 @@ BEGIN VALUE "FileVersion", KERNEL_VERSION VALUE "InternalName", "neoskrnl" VALUE "LegalCopyright", "(c) 2024-2025 Amlal El Mahrouss, all rights reserved" - VALUE "OriginalFilename", "vmkrnl.efi" + VALUE "OriginalFilename", "krnl.efi" VALUE "ProductName", "NeKernel" VALUE "ProductVersion", KERNEL_VERSION END diff --git a/dev/kernel/src/FS/HeFS.cc b/dev/kernel/src/FS/HeFS.cc index 2269896f..e053c8c4 100644 --- a/dev/kernel/src/FS/HeFS.cc +++ b/dev/kernel/src/FS/HeFS.cc @@ -31,14 +31,14 @@ namespace Kernel /// @param dir_name The name of the directory. /// @param file_name The name of the file. /// @param kind The kind of the file (regular, directory, block, character, FIFO, socket, symbolic link, unknown). - STATIC HEFS_INDEX_NODE* hefs_fetch_index_node(HEFS_BOOT_NODE* root, DriveTrait* mnt, const Utf16Char* dir_name, const Utf16Char* file_name, UInt8 kind) noexcept; + STATIC ATTRIBUTE(unused) HEFS_INDEX_NODE* hefs_fetch_index_node(HEFS_BOOT_NODE* root, DriveTrait* mnt, const Utf16Char* dir_name, const Utf16Char* file_name, UInt8 kind) noexcept; /// @brief Allocate a new index node. /// @param root The root node of the filesystem. /// @param mnt The drive to read from. /// @param parent_dir_name The name of the parent directory. /// @return Status, see err_global_get(). - STATIC BOOL hefs_allocate_index_node(HEFS_BOOT_NODE* root, DriveTrait* mnt, const Utf16Char* parent_dir_name, HEFS_INDEX_NODE* node) noexcept; + STATIC ATTRIBUTE(unused) BOOL hefs_allocate_index_node(HEFS_BOOT_NODE* root, DriveTrait* mnt, const Utf16Char* parent_dir_name, HEFS_INDEX_NODE* node) noexcept; /// @brief Get the index node of a file or directory. /// @param root The root node of the filesystem. @@ -46,7 +46,7 @@ namespace Kernel /// @param dir_name The name of the directory. /// @param file_name The name of the file. /// @param kind The kind of the file (regular, directory, block, character, FIFO, socket, symbolic link, unknown). - STATIC HEFS_INDEX_NODE* hefs_fetch_index_node(HEFS_BOOT_NODE* root, DriveTrait* mnt, const Utf16Char* dir_name, const Utf16Char* file_name, UInt8 kind) noexcept + STATIC ATTRIBUTE(unused) HEFS_INDEX_NODE* hefs_fetch_index_node(HEFS_BOOT_NODE* root, DriveTrait* mnt, const Utf16Char* dir_name, const Utf16Char* file_name, UInt8 kind) noexcept { if (root) { @@ -178,7 +178,7 @@ namespace Kernel /// @param mnt The drive to read from. /// @param parent_dir_name The name of the parent directory. /// @return Status, see err_global_get(). - STATIC BOOL hefs_allocate_index_node(HEFS_BOOT_NODE* root, DriveTrait* mnt, const Utf16Char* parent_dir_name, HEFS_INDEX_NODE* node) noexcept + STATIC ATTRIBUTE(unused) BOOL hefs_allocate_index_node(HEFS_BOOT_NODE* root, DriveTrait* mnt, const Utf16Char* parent_dir_name, HEFS_INDEX_NODE* node) noexcept { NE_UNUSED(root); NE_UNUSED(mnt); |
