patch-2.3.17 linux/include/linux/udf_udf.h

Next file: linux/include/pcmcia/bulkmem.h
Previous file: linux/include/linux/udf_fs_sb.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.16/linux/include/linux/udf_udf.h linux/include/linux/udf_udf.h
@@ -0,0 +1,228 @@
+#if !defined(_LINUX_UDF_UDF_H)
+#define _LINUX_UDF_UDF_H
+/*
+ * udf_udf.h
+ *
+ * PURPOSE
+ *	OSTA-UDF(tm) format specification [based on ECMA 167 standard].
+ *	http://www.osta.org/
+ *
+ * CONTACTS
+ *	E-mail regarding any portion of the Linux UDF file system should be
+ *	directed to the development team mailing list (run by majordomo):
+ *		linux_udf@hootie.lvld.hp.com
+ *
+ * COPYRIGHT
+ *	This file is distributed under the terms of the GNU General Public
+ *	License (GPL). Copies of the GPL can be obtained from:
+ *		ftp://prep.ai.mit.edu/pub/gnu/GPL
+ *	Each contributing author retains all rights to their own work.
+ *
+ * HISTORY
+ *	July 1, 1997 - Andrew E. Mileski
+ *	Written, tested, and released.
+ *
+ * 10/2/98 dgb	changed UDF_ID_DEVELOPER
+ * 11/26/98 bf  changed UDF_ID_DEVELOPER, 
+ * 12/5/98 dgb  updated include file hierarchy, more UDF definitions
+ */
+
+/* based on ECMA 167 structure definitions */
+#include <linux/udf_167.h>
+
+#pragma pack(1)
+
+/* -------- Basic types and constants ----------- */
+/* UDF character set (UDF 1.50 2.1.2) */
+#define UDF_CHAR_SET_TYPE	0
+#define UDF_CHAR_SET_INFO	"OSTA Compressed Unicode"
+
+#define UDF_ID_DEVELOPER	"*Linux UDFFS"
+ 
+/* UDF 1.02 2.2.6.4 */
+struct LogicalVolIntegrityDescImpUse
+{
+	EntityID	impIdent;
+	Uint32		numFiles;
+	Uint32		numDirs;
+	Uint16		minUDFReadRev;
+	Uint16		minUDFWriteRev;
+	Uint16		maxUDFWriteRev;
+};
+
+/* UDF 1.02 2.2.7.2 */
+/* LVInformation may be present in ImpUseVolDesc.impUse */
+struct ImpUseVolDescImpUse
+{
+	charspec	LVICharset;
+	dstring		logicalVolIdent[128];
+	dstring		LVInfo1[36];
+	dstring		LVInfo2[36];
+	dstring		LVInfo3[36];
+	EntityID	impIdent;
+	Uint8		impUse[128];
+};
+
+struct UdfPartitionMap2
+{
+        Uint8           partitionMapType;
+        Uint8           partitionMapLength;
+        Uint8           reserved1[2];
+        EntityID        partIdent;
+        Uint16          volSeqNum;
+        Uint16          partitionNum;
+        Uint8           reserved2[24];
+};
+
+/* UDF 1.5 2.2.8 */
+struct VirtualPartitionMap
+{
+	Uint8		partitionMapType;	/* 2 */
+	Uint8		partitionMapLength;	/* 64 */
+	Uint8		reserved1[2];		/* #00 */
+	EntityID	partIdent;
+	Uint16		volSeqNum;
+	Uint16		partitionNum;
+	Uint8		reserved2[24];		/* #00 */
+};
+
+/* UDF 1.5 2.2.9 */
+struct SparablePartitionMap
+{
+	Uint8		partitionMapType;	/* 2 */
+	Uint8		partitionMapLength;	/* 64 */
+	Uint8		reserved1[2];		/* #00 */
+	EntityID	partIdent;		/* Flags = 0 */
+						/* Id = UDF_ID_SPARABLE */
+						/* IdSuf = 2.1.5.3 */
+	Uint16		volSeqNum;
+	Uint16		partitionNum;
+	Uint16		packetLength;		/* 32 */
+	Uint8		numSparingTables;
+	Uint8		reserved2[1];		/* #00 */
+	Uint32		sizeSparingTable;
+	Uint32		locSparingTable[0];
+	Uint8		pad[0];
+};
+ 
+/* DVD Copyright Management Info, see UDF 1.02 3.3.4.5.1.2 */
+/* when ImpUseExtendedAttr.impIdent= "*UDF DVD CGMS Info" */
+struct DVDCopyrightImpUse {
+	Uint16 headerChecksum;
+	Uint8  CGMSInfo;
+	Uint8  dataType;
+	Uint8  protectionSystemInfo[4];
+};
+
+/* the impUse of long_ad used in AllocDescs  - UDF 1.02 2.3.10.1 */
+struct ADImpUse
+{
+	Uint16 flags;
+	Uint8  impUse[4];
+};
+
+/* UDF 1.02 2.3.10.1 */
+#define UDF_EXTENT_LENGTH_MASK		0x3FFFFFFF
+#define UDF_EXTENT_FLAG_MASK		0xc0000000
+#define UDF_EXTENT_FLAG_ERASED		0x40000000
+
+/* 
+ * Important!  VirtualAllocationTables are 
+ * very different between 1.5 and 2.0!
+ */
+
+/* ----------- 1.5 ------------- */
+/* UDF 1.5 2.2.10 */
+#define FILE_TYPE_VAT15		0x0U
+
+/* UDF 1.5 2.2.10 - VAT layout: */
+struct VirutalAllocationTable15 {
+	Uint32 VirtualSector[0];
+	EntityID	ident;
+	Uint32	previousVATICB;
+   };  
+/* where number of VirtualSector's is (VATSize-36)/4 */
+
+/* ----------- 2.0 ------------- */
+/* UDF 2.0 2.2.10 */
+#define FILE_TYPE_VAT20		0xf8U
+
+/* UDF 2.0 2.2.10 (different from 1.5!) */
+struct VirtualAllocationTable20 {
+	Uint16 lengthHeader;
+	Uint16 lengthImpUse;
+	dstring logicalVolIdent[128];
+	Uint32	previousVatICBLoc;
+	Uint32  numFIDSFiles;
+	Uint32  numFIDSDirectories; /* non-parent */
+	Uint16  minReadRevision;
+	Uint16	minWriteRevision;
+	Uint16  maxWriteRevision;
+	Uint16  reserved;
+	Uint8	impUse[0];
+	Uint32  vatEntry[0];
+};
+
+/* Sparing maps, see UDF 1.5 2.2.11 */
+typedef struct {
+	Uint32  origLocation;
+	Uint32  mappedLocation;
+} SparingEntry;
+
+/* sparing maps, see UDF 2.0 2.2.11 */
+struct SparingTable {
+	tag 	descTag;
+	EntityID sparingIdent; /* *UDF Sparing Table */
+	Uint16   reallocationTableLen;
+	Uint16   reserved;	/* #00 */
+	Uint32   sequenceNum;
+	SparingEntry mapEntry[0];
+};
+
+/* Entity Identifiers (UDF 1.50 6.1) */
+#define	UDF_ID_COMPLIANT	"*OSTA UDF Compliant"
+#define UDF_ID_LV_INFO		"*UDF LV Info"
+#define UDF_ID_FREE_EA		"*UDF FreeEASpace"
+#define UDF_ID_FREE_APP_EA	"*UDF FreeAppEASpace"
+#define UDF_ID_DVD_CGMS		"*UDF DVD CGMS Info"
+#define UDF_ID_OS2_EA		"*UDF OS/2 EA"
+#define UDF_ID_OS2_EA_LENGTH	"*UDF OS/2 EALength"
+#define UDF_ID_MAC_VOLUME	"*UDF Mac VolumeInfo"
+#define UDF_ID_MAC_FINDER	"*UDF Mac FinderInfo"
+#define UDF_ID_MAC_UNIQUE	"*UDF Mac UniqueIDTable"
+#define UDF_ID_MAC_RESOURCE	"*UDF Mac ResourceFork"
+#define UDF_ID_VIRTUAL		"*UDF Virtual Partition"
+#define UDF_ID_SPARABLE		"*UDF Sparable Partition"
+#define UDF_ID_ALLOC		"*UDF Virtual Alloc Tbl"
+#define UDF_ID_SPARING		"*UDF Sparing Table"
+
+/* Operating System Identifiers (UDF 1.50 6.3) */
+#define UDF_OS_CLASS_UNDEF	0x00U
+#define UDF_OS_CLASS_DOS	0x01U
+#define UDF_OS_CLASS_OS2	0x02U
+#define UDF_OS_CLASS_MAC	0x03U
+#define UDF_OS_CLASS_UNIX	0x04U
+#define UDF_OS_CLASS_WIN95	0x05U
+#define UDF_OS_CLASS_WINNT	0x06U
+#define UDF_OS_ID_UNDEF		0x00U
+#define UDF_OS_ID_DOS		0x00U
+#define UDF_OS_ID_OS2		0x00U
+#define UDF_OS_ID_MAC		0x00U
+#define UDF_OS_ID_UNIX		0x00U
+#define UDF_OS_ID_WIN95		0x00U
+#define UDF_OS_ID_WINNT		0x00U
+#define UDF_OS_ID_AIX		0x01U
+#define UDF_OS_ID_SOLARIS	0x02U
+#define UDF_OS_ID_HPUX		0x03U
+#define UDF_OS_ID_IRIX		0x04U
+#define UDF_OS_ID_LINUX		0x05U
+#define UDF_OS_ID_MKLINUX	0x06U
+#define UDF_OS_ID_FREEBSD	0x07U
+
+#define UDF_NAME_PAD	4
+#define UDF_NAME_LEN	255
+#define UDF_PATH_LEN	1023
+
+#pragma pack()
+
+#endif /* !defined(_LINUX_UDF_FMT_H) */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)