MdePkg: Add UDF volume structure definitions

This patch adds basic volume structure definitions necessary to identify
a valid UDF file system on a block device, as specified by OSTA
Universal Disk Format Specification 2.60.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Paulo Alcantara <pcacjr@zytor.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
This commit is contained in:
Paulo Alcantara 2017-09-08 09:41:45 -03:00 committed by Laszlo Ersek
parent 7aee391fa3
commit fae0d2a2c6
1 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,60 @@
/** @file
OSTA Universal Disk Format (UDF) definitions.
Copyright (C) 2014-2017 Paulo Alcantara <pcacjr@zytor.com>
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
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef __UDF_H__
#define __UDF_H__
#define UDF_BEA_IDENTIFIER "BEA01"
#define UDF_NSR2_IDENTIFIER "NSR02"
#define UDF_NSR3_IDENTIFIER "NSR03"
#define UDF_TEA_IDENTIFIER "TEA01"
#define UDF_LOGICAL_SECTOR_SHIFT 11
#define UDF_LOGICAL_SECTOR_SIZE ((UINT64)(1ULL << UDF_LOGICAL_SECTOR_SHIFT))
#define UDF_VRS_START_OFFSET ((UINT64)(16ULL << UDF_LOGICAL_SECTOR_SHIFT))
#define _GET_TAG_ID(_Pointer) \
(((UDF_DESCRIPTOR_TAG *)(_Pointer))->TagIdentifier)
#define IS_AVDP(_Pointer) \
((BOOLEAN)(_GET_TAG_ID (_Pointer) == 2))
#pragma pack(1)
typedef struct {
UINT16 TagIdentifier;
UINT16 DescriptorVersion;
UINT8 TagChecksum;
UINT8 Reserved;
UINT16 TagSerialNumber;
UINT16 DescriptorCRC;
UINT16 DescriptorCRCLength;
UINT32 TagLocation;
} UDF_DESCRIPTOR_TAG;
typedef struct {
UINT32 ExtentLength;
UINT32 ExtentLocation;
} UDF_EXTENT_AD;
typedef struct {
UDF_DESCRIPTOR_TAG DescriptorTag;
UDF_EXTENT_AD MainVolumeDescriptorSequenceExtent;
UDF_EXTENT_AD ReserveVolumeDescriptorSequenceExtent;
UINT8 Reserved[480];
} UDF_ANCHOR_VOLUME_DESCRIPTOR_POINTER;
#pragma pack()
#endif