⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecma_167.h

📁 linux 内核源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * ecma_167.h * * This file is based on ECMA-167 3rd edition (June 1997) * http://www.ecma.ch * * Copyright (c) 2001-2002  Ben Fennema <bfennema@falcon.csc.calpoly.edu> * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions, and the following disclaimer, *    without modification. * 2. The name of the author may not be used to endorse or promote products *    derived from this software without specific prior written permission. * * Alternatively, this software may be distributed under the terms of the * GNU Public License ("GPL"). * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#include <linux/types.h>#ifndef _ECMA_167_H#define _ECMA_167_H 1/* Character set specification (ECMA 167r3 1/7.2.1) */typedef struct {	uint8_t		charSetType;	uint8_t		charSetInfo[63];} __attribute__ ((packed)) charspec;/* Character Set Type (ECMA 167r3 1/7.2.1.1) */#define CHARSPEC_TYPE_CS0		0x00	/* (1/7.2.2) */#define CHARSPEC_TYPE_CS1		0x01	/* (1/7.2.3) */#define CHARSPEC_TYPE_CS2		0x02	/* (1/7.2.4) */#define CHARSPEC_TYPE_CS3		0x03	/* (1/7.2.5) */#define CHARSPEC_TYPE_CS4		0x04	/* (1/7.2.6) */#define CHARSPEC_TYPE_CS5		0x05	/* (1/7.2.7) */#define CHARSPEC_TYPE_CS6		0x06	/* (1/7.2.8) */#define CHARSPEC_TYPE_CS7		0x07	/* (1/7.2.9) */#define CHARSPEC_TYPE_CS8		0x08	/* (1/7.2.10) */typedef uint8_t		dstring;/* Timestamp (ECMA 167r3 1/7.3) */typedef struct {	__le16		typeAndTimezone;	__le16		year;	uint8_t		month;	uint8_t		day;	uint8_t		hour;	uint8_t		minute;	uint8_t		second;	uint8_t		centiseconds;	uint8_t		hundredsOfMicroseconds;	uint8_t		microseconds;} __attribute__ ((packed)) timestamp;typedef struct {	uint16_t	typeAndTimezone;	int16_t		year;	uint8_t		month;	uint8_t		day;	uint8_t		hour;	uint8_t		minute;	uint8_t		second;	uint8_t		centiseconds;	uint8_t		hundredsOfMicroseconds;	uint8_t		microseconds;} __attribute__ ((packed)) kernel_timestamp;/* Type and Time Zone (ECMA 167r3 1/7.3.1) */#define TIMESTAMP_TYPE_MASK		0xF000#define TIMESTAMP_TYPE_CUT		0x0000#define TIMESTAMP_TYPE_LOCAL		0x1000#define TIMESTAMP_TYPE_AGREEMENT	0x2000#define TIMESTAMP_TIMEZONE_MASK		0x0FFF/* Entity identifier (ECMA 167r3 1/7.4) */typedef struct {	uint8_t		flags;	uint8_t		ident[23];	uint8_t		identSuffix[8];} __attribute__ ((packed)) regid;/* Flags (ECMA 167r3 1/7.4.1) */#define ENTITYID_FLAGS_DIRTY		0x00#define ENTITYID_FLAGS_PROTECTED	0x01/* Volume Structure Descriptor (ECMA 167r3 2/9.1) */#define VSD_STD_ID_LEN			5struct volStructDesc {	uint8_t		structType;	uint8_t		stdIdent[VSD_STD_ID_LEN];	uint8_t		structVersion;	uint8_t		structData[2041];} __attribute__ ((packed));/* Standard Identifier (EMCA 167r2 2/9.1.2) */#define VSD_STD_ID_NSR02		"NSR02"	/* (3/9.1) *//* Standard Identifier (ECMA 167r3 2/9.1.2) */#define VSD_STD_ID_BEA01		"BEA01"	/* (2/9.2) */#define VSD_STD_ID_BOOT2		"BOOT2"	/* (2/9.4) */#define VSD_STD_ID_CD001		"CD001"	/* (ECMA-119) */#define VSD_STD_ID_CDW02		"CDW02"	/* (ECMA-168) */#define VSD_STD_ID_NSR03		"NSR03"	/* (3/9.1) */#define VSD_STD_ID_TEA01		"TEA01"	/* (2/9.3) *//* Beginning Extended Area Descriptor (ECMA 167r3 2/9.2) */struct beginningExtendedAreaDesc {	uint8_t		structType;	uint8_t		stdIdent[VSD_STD_ID_LEN];	uint8_t		structVersion;	uint8_t		structData[2041];} __attribute__ ((packed));/* Terminating Extended Area Descriptor (ECMA 167r3 2/9.3) */struct terminatingExtendedAreaDesc {	uint8_t		structType;	uint8_t		stdIdent[VSD_STD_ID_LEN];	uint8_t		structVersion;	uint8_t		structData[2041];} __attribute__ ((packed));/* Boot Descriptor (ECMA 167r3 2/9.4) */struct bootDesc {	uint8_t		structType;	uint8_t		stdIdent[VSD_STD_ID_LEN];	uint8_t		structVersion;	uint8_t		reserved1;	regid		archType;	regid		bootIdent;	__le32		bootExtLocation;	__le32		bootExtLength;	__le64		loadAddress;	__le64		startAddress;	timestamp	descCreationDateAndTime;	__le16		flags;	uint8_t		reserved2[32];	uint8_t		bootUse[1906];} __attribute__ ((packed));/* Flags (ECMA 167r3 2/9.4.12) */#define BOOT_FLAGS_ERASE		0x01/* Extent Descriptor (ECMA 167r3 3/7.1) */typedef struct {	__le32		extLength;	__le32		extLocation;} __attribute__ ((packed)) extent_ad;typedef struct {	uint32_t	extLength;	uint32_t	extLocation;} kernel_extent_ad;/* Descriptor Tag (ECMA 167r3 3/7.2) */typedef struct {	__le16		tagIdent;	__le16		descVersion;	uint8_t		tagChecksum;	uint8_t		reserved;	__le16		tagSerialNum;	__le16		descCRC;	__le16		descCRCLength;	__le32		tagLocation;} __attribute__ ((packed)) tag;/* Tag Identifier (ECMA 167r3 3/7.2.1) */#define TAG_IDENT_PVD			0x0001#define TAG_IDENT_AVDP			0x0002#define TAG_IDENT_VDP			0x0003#define TAG_IDENT_IUVD			0x0004#define TAG_IDENT_PD			0x0005#define TAG_IDENT_LVD			0x0006#define TAG_IDENT_USD			0x0007#define TAG_IDENT_TD			0x0008#define TAG_IDENT_LVID			0x0009/* NSR Descriptor (ECMA 167r3 3/9.1) */struct NSRDesc {	uint8_t		structType;	uint8_t		stdIdent[VSD_STD_ID_LEN];	uint8_t		structVersion;	uint8_t		reserved;	uint8_t		structData[2040];} __attribute__ ((packed));/* Primary Volume Descriptor (ECMA 167r3 3/10.1) */struct primaryVolDesc {	tag		descTag;	__le32		volDescSeqNum;	__le32		primaryVolDescNum;	dstring		volIdent[32];	__le16		volSeqNum;	__le16		maxVolSeqNum;	__le16		interchangeLvl;	__le16		maxInterchangeLvl;	__le32		charSetList;	__le32		maxCharSetList;	dstring		volSetIdent[128];	charspec	descCharSet;	charspec	explanatoryCharSet;	extent_ad	volAbstract;	extent_ad	volCopyright;	regid		appIdent;	timestamp	recordingDateAndTime;	regid		impIdent;	uint8_t		impUse[64];	__le32		predecessorVolDescSeqLocation;	__le16		flags;	uint8_t		reserved[22];} __attribute__ ((packed));/* Flags (ECMA 167r3 3/10.1.21) */#define PVD_FLAGS_VSID_COMMON		0x0001/* Anchor Volume Descriptor Pointer (ECMA 167r3 3/10.2) */struct anchorVolDescPtr {	tag		descTag;	extent_ad	mainVolDescSeqExt;	extent_ad	reserveVolDescSeqExt;	uint8_t	 	reserved[480];} __attribute__ ((packed));/* Volume Descriptor Pointer (ECMA 167r3 3/10.3) */struct volDescPtr {	tag		descTag;	__le32		volDescSeqNum;	extent_ad	nextVolDescSeqExt;	uint8_t		reserved[484];} __attribute__ ((packed));/* Implementation Use Volume Descriptor (ECMA 167r3 3/10.4) */struct impUseVolDesc {	tag		descTag;	__le32		volDescSeqNum;	regid		impIdent;	uint8_t		impUse[460];} __attribute__ ((packed));/* Partition Descriptor (ECMA 167r3 3/10.5) */struct partitionDesc {	tag descTag;	__le32 volDescSeqNum;	__le16 partitionFlags;	__le16 partitionNumber;	regid partitionContents;	uint8_t partitionContentsUse[128];	__le32 accessType;	__le32 partitionStartingLocation;	__le32 partitionLength;	regid impIdent;	uint8_t impUse[128];	uint8_t reserved[156];} __attribute__ ((packed));/* Partition Flags (ECMA 167r3 3/10.5.3) */#define PD_PARTITION_FLAGS_ALLOC	0x0001/* Partition Contents (ECMA 167r2 3/10.5.3) */#define PD_PARTITION_CONTENTS_NSR02	"+NSR02"/* Partition Contents (ECMA 167r3 3/10.5.5) */#define PD_PARTITION_CONTENTS_FDC01	"+FDC01"#define PD_PARTITION_CONTENTS_CD001	"+CD001"#define PD_PARTITION_CONTENTS_CDW02	"+CDW02"#define PD_PARTITION_CONTENTS_NSR03	"+NSR03"/* Access Type (ECMA 167r3 3/10.5.7) */#define PD_ACCESS_TYPE_NONE		0x00000000#define PD_ACCESS_TYPE_READ_ONLY	0x00000001#define PD_ACCESS_TYPE_WRITE_ONCE	0x00000002#define PD_ACCESS_TYPE_REWRITABLE	0x00000003#define PD_ACCESS_TYPE_OVERWRITABLE	0x00000004/* Logical Volume Descriptor (ECMA 167r3 3/10.6) */struct logicalVolDesc {	tag		descTag;	__le32		volDescSeqNum;	charspec	descCharSet;	dstring		logicalVolIdent[128];	__le32		logicalBlockSize;	regid		domainIdent;	uint8_t		logicalVolContentsUse[16];	__le32		mapTableLength;	__le32		numPartitionMaps;	regid		impIdent;	uint8_t		impUse[128];	extent_ad	integritySeqExt;	uint8_t		partitionMaps[0];} __attribute__ ((packed));/* Generic Partition Map (ECMA 167r3 3/10.7.1) */struct genericPartitionMap {	uint8_t		partitionMapType;	uint8_t		partitionMapLength;	uint8_t		partitionMapping[0];} __attribute__ ((packed));/* Partition Map Type (ECMA 167r3 3/10.7.1.1) */#define GP_PARTITION_MAP_TYPE_UNDEF	0x00#define GP_PARTIITON_MAP_TYPE_1		0x01#define GP_PARTITION_MAP_TYPE_2		0x02/* Type 1 Partition Map (ECMA 167r3 3/10.7.2) */struct genericPartitionMap1 {	uint8_t		partitionMapType;	uint8_t		partitionMapLength;	__le16		volSeqNum;	__le16		partitionNum;} __attribute__ ((packed));/* Type 2 Partition Map (ECMA 167r3 3/10.7.3) */struct genericPartitionMap2 {	uint8_t		partitionMapType;	uint8_t		partitionMapLength;	uint8_t		partitionIdent[62];} __attribute__ ((packed));/* Unallocated Space Descriptor (ECMA 167r3 3/10.8) */struct unallocSpaceDesc {	tag		descTag;	__le32		volDescSeqNum;	__le32		numAllocDescs;	extent_ad	allocDescs[0];} __attribute__ ((packed));/* Terminating Descriptor (ECMA 167r3 3/10.9) */struct terminatingDesc {	tag		descTag;	uint8_t		reserved[496];} __attribute__ ((packed));/* Logical Volume Integrity Descriptor (ECMA 167r3 3/10.10) */struct logicalVolIntegrityDesc {	tag		descTag;	timestamp	recordingDateAndTime;	__le32		integrityType;	extent_ad	nextIntegrityExt;	uint8_t		logicalVolContentsUse[32];	__le32		numOfPartitions;	__le32		lengthOfImpUse;	__le32		freeSpaceTable[0];	__le32		sizeTable[0];	uint8_t		impUse[0];} __attribute__ ((packed));/* Integrity Type (ECMA 167r3 3/10.10.3) */#define LVID_INTEGRITY_TYPE_OPEN	0x00000000#define LVID_INTEGRITY_TYPE_CLOSE	0x00000001/* Recorded Address (ECMA 167r3 4/7.1) */typedef struct {	__le32		logicalBlockNum;	__le16	 	partitionReferenceNum;} __attribute__ ((packed)) lb_addr;/* ... and its in-core analog */typedef struct {	uint32_t		logicalBlockNum;	uint16_t	 	partitionReferenceNum;} kernel_lb_addr;/* Short Allocation Descriptor (ECMA 167r3 4/14.14.1) */typedef struct {        __le32		extLength;        __le32		extPosition;} __attribute__ ((packed)) short_ad;/* Long Allocation Descriptor (ECMA 167r3 4/14.14.2) */typedef struct {	__le32		extLength;	lb_addr		extLocation;	uint8_t		impUse[6];} __attribute__ ((packed)) long_ad;typedef struct {	uint32_t	extLength;	kernel_lb_addr	extLocation;	uint8_t		impUse[6];} kernel_long_ad;/* Extended Allocation Descriptor (ECMA 167r3 4/14.14.3) */typedef struct {	__le32		extLength;	__le32		recordedLength;	__le32		informationLength;	lb_addr		extLocation;} __attribute__ ((packed)) ext_ad;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -