diff options
Diffstat (limited to 'src/include/ipxe/efi/Uefi/UefiGpt.h')
-rw-r--r-- | src/include/ipxe/efi/Uefi/UefiGpt.h | 98 |
1 files changed, 86 insertions, 12 deletions
diff --git a/src/include/ipxe/efi/Uefi/UefiGpt.h b/src/include/ipxe/efi/Uefi/UefiGpt.h index 92c3035e..9f563382 100644 --- a/src/include/ipxe/efi/Uefi/UefiGpt.h +++ b/src/include/ipxe/efi/Uefi/UefiGpt.h @@ -1,14 +1,14 @@ /** @file EFI Guid Partition Table Format Definition. - Copyright (c) 2006 - 2008, Intel Corporation - All rights reserved. This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php +Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR> +This program and the accompanying materials are licensed and made available under +the terms and conditions of the BSD License that accompanies this distribution. +The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php. - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ @@ -20,39 +20,113 @@ /// located in LBA 1 (i.e., the second logical block). /// #define PRIMARY_PART_HEADER_LBA 1 - /// -/// EFI Partition Table Signature: "EFI PART" +/// EFI Partition Table Signature: "EFI PART". /// -#define EFI_PTAB_HEADER_ID 0x5452415020494645ULL +#define EFI_PTAB_HEADER_ID SIGNATURE_64 ('E','F','I',' ','P','A','R','T') #pragma pack(1) /// -/// GPT Partition Table Header +/// GPT Partition Table Header. /// typedef struct { + /// + /// The table header for the GPT partition Table. + /// This header contains EFI_PTAB_HEADER_ID. + /// EFI_TABLE_HEADER Header; + /// + /// The LBA that contains this data structure. + /// EFI_LBA MyLBA; + /// + /// LBA address of the alternate GUID Partition Table Header. + /// EFI_LBA AlternateLBA; + /// + /// The first usable logical block that may be used + /// by a partition described by a GUID Partition Entry. + /// EFI_LBA FirstUsableLBA; + /// + /// The last usable logical block that may be used + /// by a partition described by a GUID Partition Entry. + /// EFI_LBA LastUsableLBA; + /// + /// GUID that can be used to uniquely identify the disk. + /// EFI_GUID DiskGUID; + /// + /// The starting LBA of the GUID Partition Entry array. + /// EFI_LBA PartitionEntryLBA; + /// + /// The number of Partition Entries in the GUID Partition Entry array. + /// UINT32 NumberOfPartitionEntries; + /// + /// The size, in bytes, of each the GUID Partition + /// Entry structures in the GUID Partition Entry + /// array. Must be a multiple of 8. + /// UINT32 SizeOfPartitionEntry; + /// + /// The CRC32 of the GUID Partition Entry array. + /// Starts at PartitionEntryLBA and is + /// computed over a byte length of + /// NumberOfPartitionEntries * SizeOfPartitionEntry. + /// UINT32 PartitionEntryArrayCRC32; } EFI_PARTITION_TABLE_HEADER; /// -/// GPT Partition Entry +/// GPT Partition Entry. /// typedef struct { + /// + /// Unique ID that defines the purpose and type of this Partition. A value of + /// zero defines that this partition entry is not being used. + /// EFI_GUID PartitionTypeGUID; + /// + /// GUID that is unique for every partition entry. Every partition ever + /// created will have a unique GUID. + /// This GUID must be assigned when the GUID Partition Entry is created. + /// EFI_GUID UniquePartitionGUID; + /// + /// Starting LBA of the partition defined by this entry + /// EFI_LBA StartingLBA; + /// + /// Ending LBA of the partition defined by this entry. + /// EFI_LBA EndingLBA; + /// + /// Attribute bits, all bits reserved by UEFI + /// Bit 0: If this bit is set, the partition is required for the platform to function. The owner/creator of the + /// partition indicates that deletion or modification of the contents can result in loss of platform + /// features or failure for the platform to boot or operate. The system cannot function normally if + /// this partition is removed, and it should be considered part of the hardware of the system. + /// Actions such as running diagnostics, system recovery, or even OS install or boot, could + /// potentially stop working if this partition is removed. Unless OS software or firmware + /// recognizes this partition, it should never be removed or modified as the UEFI firmware or + /// platform hardware may become non-functional. + /// Bit 1: If this bit is set firmware must not produce an EFI_BLOCK_IO_PROTOCOL device for + /// this partition. By not producing EFI_BLOCK_IO_PROTOCOL partition, file system + /// mappings will not be created for this partition in UEFI. + /// Bits 2-47: Undefined and must be zero. Reserved for expansion by future versions of the UEFI + /// specification. + /// Bits 48-63: Reserved for GUID specific use. The use of these bits will vary depending on the + /// PartitionTypeGUID. Only the owner of the PartitionTypeGUID is allowed + /// to modify these bits. They must be preserved if Bits 0-47 are modified.. + /// UINT64 Attributes; + /// + /// Null-terminated name of the partition. + /// CHAR16 PartitionName[36]; } EFI_PARTITION_ENTRY; |