udf_udf.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:6k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #if !defined(_LINUX_UDF_UDF_H)
  2. #define _LINUX_UDF_UDF_H
  3. /*
  4.  * udf_udf.h
  5.  *
  6.  * PURPOSE
  7.  * OSTA-UDF(tm) format specification [based on ECMA 167 standard].
  8.  * http://www.osta.org/
  9.  *
  10.  * CONTACTS
  11.  * E-mail regarding any portion of the Linux UDF file system should be
  12.  * directed to the development team mailing list (run by majordomo):
  13.  * linux_udf@hpesjro.fc.hp.com
  14.  *
  15.  * COPYRIGHT
  16.  * This file is distributed under the terms of the GNU General Public
  17.  * License (GPL). Copies of the GPL can be obtained from:
  18.  * ftp://prep.ai.mit.edu/pub/gnu/GPL
  19.  * Each contributing author retains all rights to their own work.
  20.  *
  21.  * HISTORY
  22.  * July 1, 1997 - Andrew E. Mileski
  23.  * Written, tested, and released.
  24.  *
  25.  * 10/2/98 dgb changed UDF_ID_DEVELOPER
  26.  * 11/26/98 bf  changed UDF_ID_DEVELOPER, 
  27.  * 12/5/98 dgb  updated include file hierarchy, more UDF definitions
  28.  */
  29. /* based on ECMA 167 structure definitions */
  30. #include <linux/udf_167.h>
  31. #pragma pack(1)
  32. /* -------- Basic types and constants ----------- */
  33. /* UDF character set (UDF 1.50 2.1.2) */
  34. #define UDF_CHAR_SET_TYPE 0
  35. #define UDF_CHAR_SET_INFO "OSTA Compressed Unicode"
  36. #define UDF_ID_DEVELOPER "*Linux UDFFS"
  37.  
  38. /* UDF 1.02 2.2.6.4 */
  39. struct LogicalVolIntegrityDescImpUse
  40. {
  41. EntityID impIdent;
  42. Uint32 numFiles;
  43. Uint32 numDirs;
  44. Uint16 minUDFReadRev;
  45. Uint16 minUDFWriteRev;
  46. Uint16 maxUDFWriteRev;
  47. };
  48. /* UDF 1.02 2.2.7.2 */
  49. /* LVInformation may be present in ImpUseVolDesc.impUse */
  50. struct ImpUseVolDescImpUse
  51. {
  52. charspec LVICharset;
  53. dstring logicalVolIdent[128];
  54. dstring LVInfo1[36];
  55. dstring LVInfo2[36];
  56. dstring LVInfo3[36];
  57. EntityID impIdent;
  58. Uint8 impUse[128];
  59. };
  60. struct UdfPartitionMap2
  61. {
  62.         Uint8           partitionMapType;
  63.         Uint8           partitionMapLength;
  64.         Uint8           reserved1[2];
  65.         EntityID        partIdent;
  66.         Uint16          volSeqNum;
  67.         Uint16          partitionNum;
  68.         Uint8           reserved2[24];
  69. };
  70. /* UDF 1.5 2.2.8 */
  71. struct VirtualPartitionMap
  72. {
  73. Uint8 partitionMapType; /* 2 */
  74. Uint8 partitionMapLength; /* 64 */
  75. Uint8 reserved1[2]; /* #00 */
  76. EntityID partIdent;
  77. Uint16 volSeqNum;
  78. Uint16 partitionNum;
  79. Uint8 reserved2[24]; /* #00 */
  80. };
  81. /* UDF 1.5 2.2.9 */
  82. struct SparablePartitionMap
  83. {
  84. Uint8 partitionMapType; /* 2 */
  85. Uint8 partitionMapLength; /* 64 */
  86. Uint8 reserved1[2]; /* #00 */
  87. EntityID partIdent; /* Flags = 0 */
  88. /* Id = UDF_ID_SPARABLE */
  89. /* IdSuf = 2.1.5.3 */
  90. Uint16 volSeqNum;
  91. Uint16 partitionNum;
  92. Uint16 packetLength; /* 32 */
  93. Uint8 numSparingTables;
  94. Uint8 reserved2[1]; /* #00 */
  95. Uint32 sizeSparingTable;
  96. Uint32 locSparingTable[4];
  97. };
  98.  
  99. /* DVD Copyright Management Info, see UDF 1.02 3.3.4.5.1.2 */
  100. /* when ImpUseExtendedAttr.impIdent= "*UDF DVD CGMS Info" */
  101. struct DVDCopyrightImpUse {
  102. Uint16 headerChecksum;
  103. Uint8  CGMSInfo;
  104. Uint8  dataType;
  105. Uint8  protectionSystemInfo[4];
  106. };
  107. /* the impUse of long_ad used in AllocDescs  - UDF 1.02 2.3.10.1 */
  108. struct ADImpUse
  109. {
  110. Uint16 flags;
  111. Uint8  impUse[4];
  112. };
  113. /* UDF 1.02 2.3.10.1 */
  114. #define UDF_EXTENT_LENGTH_MASK 0x3FFFFFFF
  115. #define UDF_EXTENT_FLAG_MASK 0xc0000000
  116. #define UDF_EXTENT_FLAG_ERASED 0x40000000
  117. /* 
  118.  * Important!  VirtualAllocationTables are 
  119.  * very different between 1.5 and 2.0!
  120.  */
  121. /* ----------- 1.5 ------------- */
  122. /* UDF 1.5 2.2.10 */
  123. #define FILE_TYPE_VAT15 0x0U
  124. /* UDF 1.5 2.2.10 - VAT layout: */
  125. struct VirutalAllocationTable15 {
  126. Uint32 VirtualSector[0];
  127. EntityID ident;
  128. Uint32 previousVATICB;
  129.    };  
  130. /* where number of VirtualSector's is (VATSize-36)/4 */
  131. /* ----------- 2.0 ------------- */
  132. /* UDF 2.0 2.2.10 */
  133. #define FILE_TYPE_VAT20 0xf8U
  134. /* UDF 2.0 2.2.10 (different from 1.5!) */
  135. struct VirtualAllocationTable20 {
  136. Uint16 lengthHeader;
  137. Uint16 lengthImpUse;
  138. dstring logicalVolIdent[128];
  139. Uint32 previousVatICBLoc;
  140. Uint32  numFIDSFiles;
  141. Uint32  numFIDSDirectories; /* non-parent */
  142. Uint16  minReadRevision;
  143. Uint16 minWriteRevision;
  144. Uint16  maxWriteRevision;
  145. Uint16  reserved;
  146. Uint8 impUse[0];
  147. Uint32  vatEntry[0];
  148. };
  149. /* ----------- 2.01 ------------- */
  150. /* UDF 2.01 6.11 */
  151. #define FILE_TYPE_REALTIME 0xf9U
  152. /* Sparing maps, see UDF 1.5 2.2.11 */
  153. typedef struct {
  154. Uint32  origLocation;
  155. Uint32  mappedLocation;
  156. } SparingEntry;
  157. /* sparing maps, see UDF 2.0 2.2.11 */
  158. struct SparingTable {
  159. tag  descTag;
  160. EntityID sparingIdent; /* *UDF Sparing Table */
  161. Uint16   reallocationTableLen;
  162. Uint16   reserved; /* #00 */
  163. Uint32   sequenceNum;
  164. SparingEntry mapEntry[0];
  165. };
  166. /* Entity Identifiers (UDF 1.50 6.1) */
  167. #define UDF_ID_COMPLIANT "*OSTA UDF Compliant"
  168. #define UDF_ID_LV_INFO "*UDF LV Info"
  169. #define UDF_ID_FREE_EA "*UDF FreeEASpace"
  170. #define UDF_ID_FREE_APP_EA "*UDF FreeAppEASpace"
  171. #define UDF_ID_DVD_CGMS "*UDF DVD CGMS Info"
  172. #define UDF_ID_OS2_EA "*UDF OS/2 EA"
  173. #define UDF_ID_OS2_EA_LENGTH "*UDF OS/2 EALength"
  174. #define UDF_ID_MAC_VOLUME "*UDF Mac VolumeInfo"
  175. #define UDF_ID_MAC_FINDER "*UDF Mac FinderInfo"
  176. #define UDF_ID_MAC_UNIQUE "*UDF Mac UniqueIDTable"
  177. #define UDF_ID_MAC_RESOURCE "*UDF Mac ResourceFork"
  178. #define UDF_ID_VIRTUAL "*UDF Virtual Partition"
  179. #define UDF_ID_SPARABLE "*UDF Sparable Partition"
  180. #define UDF_ID_ALLOC "*UDF Virtual Alloc Tbl"
  181. #define UDF_ID_SPARING "*UDF Sparing Table"
  182. /* Operating System Identifiers (UDF 1.50 6.3) */
  183. #define UDF_OS_CLASS_UNDEF 0x00U
  184. #define UDF_OS_CLASS_DOS 0x01U
  185. #define UDF_OS_CLASS_OS2 0x02U
  186. #define UDF_OS_CLASS_MAC 0x03U
  187. #define UDF_OS_CLASS_UNIX 0x04U
  188. #define UDF_OS_CLASS_WIN95 0x05U
  189. #define UDF_OS_CLASS_WINNT 0x06U
  190. #define UDF_OS_ID_UNDEF 0x00U
  191. #define UDF_OS_ID_DOS 0x00U
  192. #define UDF_OS_ID_OS2 0x00U
  193. #define UDF_OS_ID_MAC 0x00U
  194. #define UDF_OS_ID_UNIX 0x00U
  195. #define UDF_OS_ID_WIN95 0x00U
  196. #define UDF_OS_ID_WINNT 0x00U
  197. #define UDF_OS_ID_AIX 0x01U
  198. #define UDF_OS_ID_SOLARIS 0x02U
  199. #define UDF_OS_ID_HPUX 0x03U
  200. #define UDF_OS_ID_IRIX 0x04U
  201. #define UDF_OS_ID_LINUX 0x05U
  202. #define UDF_OS_ID_MKLINUX 0x06U
  203. #define UDF_OS_ID_FREEBSD 0x07U
  204. #define UDF_NAME_PAD 4
  205. #define UDF_NAME_LEN 255
  206. #define UDF_PATH_LEN 1023
  207. #pragma pack()
  208. #endif /* !defined(_LINUX_UDF_FMT_H) */