]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/Udf.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Udf.h
CommitLineData
fae0d2a2
PA
1/** @file\r
2 OSTA Universal Disk Format (UDF) definitions.\r
3\r
4 Copyright (C) 2014-2017 Paulo Alcantara <pcacjr@zytor.com>\r
5\r
9344f092 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
fae0d2a2
PA
7**/\r
8\r
9#ifndef __UDF_H__\r
10#define __UDF_H__\r
11\r
12#define UDF_BEA_IDENTIFIER "BEA01"\r
13#define UDF_NSR2_IDENTIFIER "NSR02"\r
14#define UDF_NSR3_IDENTIFIER "NSR03"\r
15#define UDF_TEA_IDENTIFIER "TEA01"\r
16\r
17#define UDF_LOGICAL_SECTOR_SHIFT 11\r
18#define UDF_LOGICAL_SECTOR_SIZE ((UINT64)(1ULL << UDF_LOGICAL_SECTOR_SHIFT))\r
19#define UDF_VRS_START_OFFSET ((UINT64)(16ULL << UDF_LOGICAL_SECTOR_SHIFT))\r
20\r
264d16fc 21typedef enum {\r
2f88bd3a
MK
22 UdfPrimaryVolumeDescriptor = 1,\r
23 UdfAnchorVolumeDescriptorPointer = 2,\r
24 UdfVolumeDescriptorPointer = 3,\r
264d16fc 25 UdfImplemenationUseVolumeDescriptor = 4,\r
2f88bd3a
MK
26 UdfPartitionDescriptor = 5,\r
27 UdfLogicalVolumeDescriptor = 6,\r
28 UdfUnallocatedSpaceDescriptor = 7,\r
29 UdfTerminatingDescriptor = 8,\r
264d16fc 30 UdfLogicalVolumeIntegrityDescriptor = 9,\r
2f88bd3a
MK
31 UdfFileSetDescriptor = 256,\r
32 UdfFileIdentifierDescriptor = 257,\r
33 UdfAllocationExtentDescriptor = 258,\r
34 UdfFileEntry = 261,\r
35 UdfExtendedFileEntry = 266,\r
264d16fc 36} UDF_VOLUME_DESCRIPTOR_ID;\r
fae0d2a2
PA
37\r
38#pragma pack(1)\r
39\r
40typedef struct {\r
2f88bd3a
MK
41 UINT16 TagIdentifier;\r
42 UINT16 DescriptorVersion;\r
43 UINT8 TagChecksum;\r
44 UINT8 Reserved;\r
45 UINT16 TagSerialNumber;\r
46 UINT16 DescriptorCRC;\r
47 UINT16 DescriptorCRCLength;\r
48 UINT32 TagLocation;\r
fae0d2a2
PA
49} UDF_DESCRIPTOR_TAG;\r
50\r
51typedef struct {\r
2f88bd3a
MK
52 UINT32 ExtentLength;\r
53 UINT32 ExtentLocation;\r
fae0d2a2
PA
54} UDF_EXTENT_AD;\r
55\r
264d16fc 56typedef struct {\r
2f88bd3a
MK
57 UINT8 CharacterSetType;\r
58 UINT8 CharacterSetInfo[63];\r
264d16fc
PA
59} UDF_CHAR_SPEC;\r
60\r
61typedef struct {\r
2f88bd3a
MK
62 UINT8 Flags;\r
63 UINT8 Identifier[23];\r
264d16fc
PA
64 union {\r
65 //\r
66 // Domain Entity Identifier\r
67 //\r
68 struct {\r
2f88bd3a
MK
69 UINT16 UdfRevision;\r
70 UINT8 DomainFlags;\r
71 UINT8 Reserved[5];\r
264d16fc
PA
72 } Domain;\r
73 //\r
74 // UDF Entity Identifier\r
75 //\r
76 struct {\r
2f88bd3a
MK
77 UINT16 UdfRevision;\r
78 UINT8 OSClass;\r
79 UINT8 OSIdentifier;\r
80 UINT8 Reserved[4];\r
264d16fc
PA
81 } Entity;\r
82 //\r
83 // Implementation Entity Identifier\r
84 //\r
85 struct {\r
2f88bd3a
MK
86 UINT8 OSClass;\r
87 UINT8 OSIdentifier;\r
88 UINT8 ImplementationUseArea[6];\r
264d16fc
PA
89 } ImplementationEntity;\r
90 //\r
91 // Application Entity Identifier\r
92 //\r
93 struct {\r
2f88bd3a 94 UINT8 ApplicationUseArea[8];\r
264d16fc
PA
95 } ApplicationEntity;\r
96 //\r
97 // Raw Identifier Suffix\r
98 //\r
99 struct {\r
2f88bd3a 100 UINT8 Data[8];\r
264d16fc
PA
101 } Raw;\r
102 } Suffix;\r
103} UDF_ENTITY_ID;\r
104\r
105typedef struct {\r
2f88bd3a
MK
106 UINT32 LogicalBlockNumber;\r
107 UINT16 PartitionReferenceNumber;\r
264d16fc
PA
108} UDF_LB_ADDR;\r
109\r
110typedef struct {\r
2f88bd3a
MK
111 UINT32 ExtentLength;\r
112 UDF_LB_ADDR ExtentLocation;\r
113 UINT8 ImplementationUse[6];\r
264d16fc
PA
114} UDF_LONG_ALLOCATION_DESCRIPTOR;\r
115\r
fae0d2a2 116typedef struct {\r
2f88bd3a
MK
117 UDF_DESCRIPTOR_TAG DescriptorTag;\r
118 UDF_EXTENT_AD MainVolumeDescriptorSequenceExtent;\r
119 UDF_EXTENT_AD ReserveVolumeDescriptorSequenceExtent;\r
120 UINT8 Reserved[480];\r
fae0d2a2
PA
121} UDF_ANCHOR_VOLUME_DESCRIPTOR_POINTER;\r
122\r
264d16fc 123typedef struct {\r
2f88bd3a
MK
124 UDF_DESCRIPTOR_TAG DescriptorTag;\r
125 UINT32 VolumeDescriptorSequenceNumber;\r
126 UDF_CHAR_SPEC DescriptorCharacterSet;\r
127 UINT8 LogicalVolumeIdentifier[128];\r
128 UINT32 LogicalBlockSize;\r
129 UDF_ENTITY_ID DomainIdentifier;\r
130 UDF_LONG_ALLOCATION_DESCRIPTOR LogicalVolumeContentsUse;\r
131 UINT32 MapTableLength;\r
132 UINT32 NumberOfPartitionMaps;\r
133 UDF_ENTITY_ID ImplementationIdentifier;\r
134 UINT8 ImplementationUse[128];\r
135 UDF_EXTENT_AD IntegritySequenceExtent;\r
136 UINT8 PartitionMaps[6];\r
264d16fc
PA
137} UDF_LOGICAL_VOLUME_DESCRIPTOR;\r
138\r
fae0d2a2
PA
139#pragma pack()\r
140\r
141#endif\r