]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Uefi/UefiGpt.h
Update comments of BIT1 and BIT2 to align UEFI Spec 2.3d for EFI_PARTITION_ENTRY...
[mirror_edk2.git] / MdePkg / Include / Uefi / UefiGpt.h
CommitLineData
c311f86b 1/** @file\r
959ccb23 2 EFI Guid Partition Table Format Definition.\r
3\r
36b85974 4Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
af2dc6a7 5This program and the accompanying materials are licensed and made available under \r
6the terms and conditions of the BSD License that accompanies this distribution. \r
7The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php. \r
9 \r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
959ccb23 12\r
959ccb23 13**/\r
14\r
15#ifndef __UEFI_GPT_H__\r
16#define __UEFI_GPT_H__\r
17\r
e0c047a0 18///\r
19/// The primary GUID Partition Table Header must be\r
20/// located in LBA 1 (i.e., the second logical block).\r
21///\r
959ccb23 22#define PRIMARY_PART_HEADER_LBA 1\r
8b13229b 23///\r
af2dc6a7 24/// EFI Partition Table Signature: "EFI PART".\r
8b13229b 25/// \r
f6d2bcc6 26#define EFI_PTAB_HEADER_ID SIGNATURE_64 ('E','F','I',' ','P','A','R','T')\r
959ccb23 27\r
28#pragma pack(1)\r
8b13229b 29\r
30///\r
af2dc6a7 31/// GPT Partition Table Header.\r
8b13229b 32///\r
959ccb23 33typedef struct {\r
1bf79370
LG
34 ///\r
35 /// The table header for the GPT partition Table.\r
af2dc6a7 36 /// This header contains EFI_PTAB_HEADER_ID.\r
1bf79370 37 ///\r
959ccb23 38 EFI_TABLE_HEADER Header;\r
1bf79370
LG
39 ///\r
40 /// The LBA that contains this data structure.\r
41 ///\r
959ccb23 42 EFI_LBA MyLBA;\r
1bf79370
LG
43 ///\r
44 /// LBA address of the alternate GUID Partition Table Header.\r
45 ///\r
959ccb23 46 EFI_LBA AlternateLBA;\r
1bf79370
LG
47 ///\r
48 /// The first usable logical block that may be used\r
49 /// by a partition described by a GUID Partition Entry.\r
50 ///\r
959ccb23 51 EFI_LBA FirstUsableLBA;\r
1bf79370
LG
52 ///\r
53 /// The last usable logical block that may be used\r
54 /// by a partition described by a GUID Partition Entry.\r
55 ///\r
959ccb23 56 EFI_LBA LastUsableLBA;\r
1bf79370
LG
57 ///\r
58 /// GUID that can be used to uniquely identify the disk.\r
59 ///\r
959ccb23 60 EFI_GUID DiskGUID;\r
1bf79370
LG
61 ///\r
62 /// The starting LBA of the GUID Partition Entry array.\r
63 ///\r
959ccb23 64 EFI_LBA PartitionEntryLBA;\r
1bf79370
LG
65 ///\r
66 /// The number of Partition Entries in the GUID Partition Entry array.\r
67 ///\r
959ccb23 68 UINT32 NumberOfPartitionEntries;\r
1bf79370
LG
69 ///\r
70 /// The size, in bytes, of each the GUID Partition\r
71 /// Entry structures in the GUID Partition Entry\r
72 /// array. Must be a multiple of 8.\r
73 ///\r
959ccb23 74 UINT32 SizeOfPartitionEntry;\r
1bf79370
LG
75 ///\r
76 /// The CRC32 of the GUID Partition Entry array.\r
77 /// Starts at PartitionEntryLBA and is\r
78 /// computed over a byte length of\r
79 /// NumberOfPartitionEntries * SizeOfPartitionEntry.\r
80 ///\r
959ccb23 81 UINT32 PartitionEntryArrayCRC32;\r
82} EFI_PARTITION_TABLE_HEADER;\r
83\r
8b13229b 84///\r
af2dc6a7 85/// GPT Partition Entry.\r
8b13229b 86///\r
959ccb23 87typedef struct {\r
1bf79370
LG
88 ///\r
89 /// Unique ID that defines the purpose and type of this Partition. A value of\r
90 /// zero defines that this partition entry is not being used.\r
91 ///\r
959ccb23 92 EFI_GUID PartitionTypeGUID;\r
1bf79370
LG
93 ///\r
94 /// GUID that is unique for every partition entry. Every partition ever\r
95 /// created will have a unique GUID.\r
96 /// This GUID must be assigned when the GUID Partition Entry is created.\r
97 ///\r
959ccb23 98 EFI_GUID UniquePartitionGUID;\r
1bf79370
LG
99 ///\r
100 /// Starting LBA of the partition defined by this entry\r
101 ///\r
959ccb23 102 EFI_LBA StartingLBA;\r
1bf79370
LG
103 ///\r
104 /// Ending LBA of the partition defined by this entry.\r
105 ///\r
959ccb23 106 EFI_LBA EndingLBA;\r
1bf79370
LG
107 ///\r
108 /// Attribute bits, all bits reserved by UEFI\r
41c333aa 109 /// Bit 0: If this bit is set, the partition is required for the platform to function. The owner/creator of the\r
110 /// partition indicates that deletion or modification of the contents can result in loss of platform\r
111 /// features or failure for the platform to boot or operate. The system cannot function normally if\r
112 /// this partition is removed, and it should be considered part of the hardware of the system.\r
af2dc6a7 113 /// Actions such as running diagnostics, system recovery, or even OS install or boot, could\r
41c333aa 114 /// potentially stop working if this partition is removed. Unless OS software or firmware\r
115 /// recognizes this partition, it should never be removed or modified as the UEFI firmware or\r
116 /// platform hardware may become non-functional.\r
36b85974
RN
117 /// Bit 1: If this bit is set, then firmware must not produce an EFI_BLOCK_IO_PROTOCOL device for\r
118 /// this partition. By not producing an EFI_BLOCK_IO_PROTOCOL partition, file system\r
41c333aa 119 /// mappings will not be created for this partition in UEFI.\r
36b85974
RN
120 /// Bit 2: This bit is set aside to let systems with traditional PC-AT BIOS firmware implementations\r
121 /// inform certain limited, special-purpose software running on these systems that a GPT \r
122 /// partition may be bootable. The UEFI boot manager must ignore this bit when selecting\r
123 /// a UEFI-compliant application, e.g., an OS loader.\r
124 /// Bits 3-47: Undefined and must be zero. Reserved for expansion by future versions of the UEFI\r
41c333aa 125 /// specification.\r
126 /// Bits 48-63: Reserved for GUID specific use. The use of these bits will vary depending on the\r
127 /// PartitionTypeGUID. Only the owner of the PartitionTypeGUID is allowed\r
fa3e7746 128 /// to modify these bits. They must be preserved if Bits 0-47 are modified..\r
1bf79370 129 ///\r
959ccb23 130 UINT64 Attributes;\r
1bf79370 131 ///\r
fbf926ad 132 /// Null-terminated name of the partition.\r
1bf79370 133 ///\r
959ccb23 134 CHAR16 PartitionName[36];\r
135} EFI_PARTITION_ENTRY;\r
136\r
959ccb23 137#pragma pack()\r
138#endif\r
139\r
140\r