summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel')
-rw-r--r--dev/kernel/FSKit/HeFS.h4
-rw-r--r--dev/kernel/FirmwareKit/EPM.h11
-rw-r--r--dev/kernel/FirmwareKit/GPT.h16
-rw-r--r--dev/kernel/FirmwareKit/VEPM.h29
-rw-r--r--dev/kernel/KernelKit/DriveMgr.h2
-rw-r--r--dev/kernel/amd64-ci.make2
-rw-r--r--dev/kernel/amd64-desktop.make2
-rw-r--r--dev/kernel/arm64-desktop.make2
-rw-r--r--dev/kernel/kernel_rsrc.rsrc2
-rw-r--r--dev/kernel/src/FS/HeFS.cc8
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);