X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FDisk%2FUdfDxe%2FUdf.h;h=d441539d162de92e5a56b21d0519b870e639ca1b;hp=641e0ae267c47a519e10e9cde8eea1f0c142ebc5;hb=baaa3cee1eafc044606ee9dc60ec091713f81b8b;hpb=077f8c4372cc68efea91243dd1fe77d41315444d diff --git a/MdeModulePkg/Universal/Disk/UdfDxe/Udf.h b/MdeModulePkg/Universal/Disk/UdfDxe/Udf.h index 641e0ae267..d441539d16 100644 --- a/MdeModulePkg/Universal/Disk/UdfDxe/Udf.h +++ b/MdeModulePkg/Universal/Disk/UdfDxe/Udf.h @@ -49,67 +49,40 @@ { 0x89, 0x56, 0x73, 0xCD, 0xA3, 0x26, 0xCD, 0x0A } \ } -#define UDF_DEFAULT_LV_NUM 0 - -#define IS_PVD(_Pointer) \ - ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 1)) -#define IS_PD(_Pointer) \ - ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 5)) -#define IS_LVD(_Pointer) \ - ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 6)) -#define IS_TD(_Pointer) \ - ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 8)) -#define IS_FSD(_Pointer) \ - ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 256)) -#define IS_FE(_Pointer) \ - ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 261)) -#define IS_EFE(_Pointer) \ - ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 266)) -#define IS_FID(_Pointer) \ - ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 257)) -#define IS_AED(_Pointer) \ - ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 258)) -#define IS_LVID(_Pointer) \ - ((BOOLEAN)(_GET_TAG_ID (_Pointer) == 9)) - -#define _GET_FILETYPE(_Pointer) \ - (IS_FE (_Pointer) ? \ - (((UDF_FILE_ENTRY *)(_Pointer))->IcbTag.FileType) \ - : \ - (((UDF_EXTENDED_FILE_ENTRY *)(_Pointer))->IcbTag.FileType)) - -#define IS_FE_DIRECTORY(_Pointer) \ - ((BOOLEAN)(_GET_FILETYPE (_Pointer) == 4)) -#define IS_FE_STANDARD_FILE(_Pointer) \ - ((BOOLEAN)(_GET_FILETYPE (_Pointer) == 5)) -#define IS_FE_SYMLINK(_Pointer) \ - ((BOOLEAN)(_GET_FILETYPE (_Pointer) == 12)) +#define FE_ICB_FILE_TYPE(_Ptr) \ + (UDF_FILE_ENTRY_TYPE)( \ + ((UDF_DESCRIPTOR_TAG *)(_Ptr))->TagIdentifier == UdfFileEntry ? \ + ((UDF_FILE_ENTRY *)(_Ptr))->IcbTag.FileType : \ + ((UDF_EXTENDED_FILE_ENTRY *)(_Ptr))->IcbTag.FileType) + +typedef enum { + UdfFileEntryDirectory = 4, + UdfFileEntryStandardFile = 5, + UdfFileEntrySymlink = 12, +} UDF_FILE_ENTRY_TYPE; #define HIDDEN_FILE (1 << 0) #define DIRECTORY_FILE (1 << 1) #define DELETED_FILE (1 << 2) #define PARENT_FILE (1 << 3) -#define _GET_FILE_CHARS(_Pointer) \ - (((UDF_FILE_IDENTIFIER_DESCRIPTOR *)(_Pointer))->FileCharacteristics) - -#define IS_FID_HIDDEN_FILE(_Pointer) \ - ((BOOLEAN)(_GET_FILE_CHARS (_Pointer) & HIDDEN_FILE)) -#define IS_FID_DIRECTORY_FILE(_Pointer) \ - ((BOOLEAN)(_GET_FILE_CHARS (_Pointer) & DIRECTORY_FILE)) -#define IS_FID_DELETED_FILE(_Pointer) \ - ((BOOLEAN)(_GET_FILE_CHARS (_Pointer) & DELETED_FILE)) -#define IS_FID_PARENT_FILE(_Pointer) \ - ((BOOLEAN)(_GET_FILE_CHARS (_Pointer) & PARENT_FILE)) -#define IS_FID_NORMAL_FILE(_Pointer) \ - ((BOOLEAN)(!IS_FID_DIRECTORY_FILE (_Pointer) && \ - !IS_FID_PARENT_FILE (_Pointer))) +#define IS_FID_HIDDEN_FILE(_Fid) \ + (BOOLEAN)((_Fid)->FileCharacteristics & HIDDEN_FILE) +#define IS_FID_DIRECTORY_FILE(_Fid) \ + (BOOLEAN)((_Fid)->FileCharacteristics & DIRECTORY_FILE) +#define IS_FID_DELETED_FILE(_Fid) \ + (BOOLEAN)((_Fid)->FileCharacteristics & DELETED_FILE) +#define IS_FID_PARENT_FILE(_Fid) \ + (BOOLEAN)((_Fid)->FileCharacteristics & PARENT_FILE) +#define IS_FID_NORMAL_FILE(_Fid) \ + (BOOLEAN)(!IS_FID_DIRECTORY_FILE (_Fid) && \ + !IS_FID_PARENT_FILE (_Fid)) typedef enum { - SHORT_ADS_SEQUENCE, - LONG_ADS_SEQUENCE, - EXTENDED_ADS_SEQUENCE, - INLINE_DATA + ShortAdsSequence, + LongAdsSequence, + ExtendedAdsSequence, + InlineData } UDF_FE_RECORDING_FLAGS; #define GET_FE_RECORDING_FLAGS(_Fe) \ @@ -118,26 +91,26 @@ typedef enum { sizeof (UDF_DESCRIPTOR_TAG)))->Flags & 0x07) typedef enum { - EXTENT_RECORDED_AND_ALLOCATED, - EXTENT_NOT_RECORDED_BUT_ALLOCATED, - EXTENT_NOT_RECORDED_NOT_ALLOCATED, - EXTENT_IS_NEXT_EXTENT, + ExtentRecordedAndAllocated, + ExtentNotRecordedButAllocated, + ExtentNotRecordedNotAllocated, + ExtentIsNextExtent, } UDF_EXTENT_FLAGS; #define AD_LENGTH(_RecFlags) \ - ((_RecFlags) == SHORT_ADS_SEQUENCE ? \ + ((_RecFlags) == ShortAdsSequence ? \ ((UINT64)(sizeof (UDF_SHORT_ALLOCATION_DESCRIPTOR))) : \ ((UINT64)(sizeof (UDF_LONG_ALLOCATION_DESCRIPTOR)))) #define GET_EXTENT_FLAGS(_RecFlags, _Ad) \ - ((_RecFlags) == SHORT_ADS_SEQUENCE ? \ + ((_RecFlags) == ShortAdsSequence ? \ ((UDF_EXTENT_FLAGS)((((UDF_SHORT_ALLOCATION_DESCRIPTOR *)(_Ad))->ExtentLength >> \ 30) & 0x3)) : \ ((UDF_EXTENT_FLAGS)((((UDF_LONG_ALLOCATION_DESCRIPTOR *)(_Ad))->ExtentLength >> \ 30) & 0x3))) #define GET_EXTENT_LENGTH(_RecFlags, _Ad) \ - ((_RecFlags) == SHORT_ADS_SEQUENCE ? \ + ((_RecFlags) == ShortAdsSequence ? \ ((UINT32)((((UDF_SHORT_ALLOCATION_DESCRIPTOR *)(_Ad))->ExtentLength & \ ~0xC0000000UL))) : \ ((UINT32)((((UDF_LONG_ALLOCATION_DESCRIPTOR *)(_Ad))->ExtentLength & \ @@ -152,14 +125,8 @@ typedef enum { #define IS_VALID_COMPRESSION_ID(_CompId) \ ((BOOLEAN)((_CompId) == 8 || (_CompId) == 16)) -#define LV_BLOCK_SIZE(_Vol, _LvNum) \ - (_Vol)->LogicalVolDescs[(_LvNum)]->LogicalBlockSize - #define UDF_STANDARD_IDENTIFIER_LENGTH 5 -#define LV_UDF_REVISION(_Lv) \ - *(UINT16 *)(UINTN)(_Lv)->DomainIdentifier.IdentifierSuffix - #pragma pack(1) typedef struct { @@ -169,9 +136,9 @@ typedef struct { #pragma pack() typedef enum { - READ_FILE_GET_FILESIZE, - READ_FILE_ALLOCATE_AND_READ, - READ_FILE_SEEK_AND_READ, + ReadFileGetFileSize, + ReadFileAllocateAndRead, + ReadFileSeekAndRead, } UDF_READ_FILE_FLAGS; typedef struct { @@ -185,17 +152,6 @@ typedef struct { #pragma pack(1) -typedef struct { - UINT8 CharacterSetType; - UINT8 CharacterSetInfo[63]; -} UDF_CHAR_SPEC; - -typedef struct { - UINT8 Flags; - UINT8 Identifier[23]; - UINT8 IdentifierSuffix[8]; -} UDF_ENTITY_ID; - typedef struct { UINT16 TypeAndTimezone; INT16 Year; @@ -209,17 +165,6 @@ typedef struct { UINT8 Microseconds; } UDF_TIMESTAMP; -typedef struct { - UINT32 LogicalBlockNumber; - UINT16 PartitionReferenceNumber; -} UDF_LB_ADDR; - -typedef struct { - UINT32 ExtentLength; - UDF_LB_ADDR ExtentLocation; - UINT8 ImplementationUse[6]; -} UDF_LONG_ALLOCATION_DESCRIPTOR; - typedef struct { UDF_DESCRIPTOR_TAG DescriptorTag; UINT32 PrevAllocationExtentDescriptor; @@ -234,6 +179,17 @@ typedef struct { UINT8 StructureData[2040]; } UDF_VOLUME_DESCRIPTOR; +typedef struct { + UDF_DESCRIPTOR_TAG DescriptorTag; + UDF_TIMESTAMP RecordingDateTime; + UINT32 IntegrityType; + UDF_EXTENT_AD NextIntegrityExtent; + UINT8 LogicalVolumeContentsUse[32]; + UINT32 NumberOfPartitions; + UINT32 LengthOfImplementationUse; + UINT8 Data[0]; +} UDF_LOGICAL_VOLUME_INTEGRITY; + typedef struct { UDF_DESCRIPTOR_TAG DescriptorTag; UINT32 VolumeDescriptorSequenceNumber; @@ -249,33 +205,6 @@ typedef struct { UINT8 Reserved[156]; } UDF_PARTITION_DESCRIPTOR; -typedef struct { - UDF_DESCRIPTOR_TAG DescriptorTag; - UINT32 VolumeDescriptorSequenceNumber; - UDF_CHAR_SPEC DescriptorCharacterSet; - UINT8 LogicalVolumeIdentifier[128]; - UINT32 LogicalBlockSize; - UDF_ENTITY_ID DomainIdentifier; - UDF_LONG_ALLOCATION_DESCRIPTOR LogicalVolumeContentsUse; - UINT32 MapTableLength; - UINT32 NumberOfPartitionMaps; - UDF_ENTITY_ID ImplementationIdentifier; - UINT8 ImplementationUse[128]; - UDF_EXTENT_AD IntegritySequenceExtent; - UINT8 PartitionMaps[6]; -} UDF_LOGICAL_VOLUME_DESCRIPTOR; - -typedef struct { - UDF_DESCRIPTOR_TAG DescriptorTag; - UDF_TIMESTAMP RecordingDateTime; - UINT32 IntegrityType; - UDF_EXTENT_AD NextIntegrityExtent; - UINT8 LogicalVolumeContentsUse[32]; - UINT32 NumberOfPartitions; - UINT32 LengthOfImplementationUse; - UINT8 Data[0]; -} UDF_LOGICAL_VOLUME_INTEGRITY; - typedef struct { UDF_DESCRIPTOR_TAG DescriptorTag; UDF_TIMESTAMP RecordingDateAndTime; @@ -389,12 +318,10 @@ typedef struct { // UDF filesystem driver's private data // typedef struct { - UDF_LOGICAL_VOLUME_DESCRIPTOR **LogicalVolDescs; - UINTN LogicalVolDescsNo; - UDF_PARTITION_DESCRIPTOR **PartitionDescs; - UINTN PartitionDescsNo; - UDF_FILE_SET_DESCRIPTOR **FileSetDescs; - UINTN FileSetDescsNo; + UINT64 MainVdsStartLocation; + UDF_LOGICAL_VOLUME_DESCRIPTOR LogicalVolDesc; + UDF_PARTITION_DESCRIPTOR PartitionDesc; + UDF_FILE_SET_DESCRIPTOR FileSetDesc; UINTN FileEntrySize; } UDF_VOLUME_INFO; @@ -883,17 +810,6 @@ ResolveSymlink ( OUT UDF_FILE_INFO *File ); -/** - Clean up in-memory UDF volume information. - - @param[in] Volume Volume information pointer. - -**/ -VOID -CleanupVolumeInformation ( - IN UDF_VOLUME_INFO *Volume - ); - /** Clean up in-memory UDF file information.