blob: 025378d0dcea513008abdd38d84024d387af2bc7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
#ifndef FIRMWAREKIT_GPT_H
#define FIRMWAREKIT_GPT_H
#include <FirmwareKit/EFI/EFI.h>
#include <NeKit/Config.h>
#define kSectorAlignGPT_PartTbl (420U)
#define kSectorAlignGPT_PartEntry (72U)
#define kMagicLenGPT (8U)
#define kMagicGPT ("EFI PART") // "EFI PART"
#define kGPTPartitionTableLBA (512U + sizeof(GPT_PARTITION_TABLE))
namespace Kernel {
struct GPT_PARTITION_TABLE;
struct GPT_PARTITION_ENTRY;
struct PACKED GPT_PARTITION_TABLE final {
Char Signature[kMagicLenGPT];
UInt32 Revision;
UInt32 HeaderSize;
UInt32 CRC32;
UInt32 Reserved1;
UInt64 LBAHeader;
UInt64 LBAAltHeader;
UInt64 FirstGPTEntry;
UInt64 LastGPTEntry;
EFI_GUID Guid;
UInt64 StartingLBA;
UInt32 NumPartitionEntries;
UInt32 SizeOfEntries;
UInt32 CRC32PartEntry;
UInt8 Reserved2[kSectorAlignGPT_PartTbl];
};
struct PACKED GPT_PARTITION_ENTRY {
EFI_GUID PartitionTypeGUID;
EFI_GUID UniquePartitionGUID;
UInt64 StartLBA;
UInt64 EndLBA;
UInt64 Attributes;
UInt8 Name[kSectorAlignGPT_PartEntry];
};
} // namespace Kernel
#endif
|