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

📄 vdreg.h

📁 早期freebsd实现
💻 H
📖 第 1 页 / 共 2 页
字号:
} dskadr;/* * DCB trailer formats. *//* read/write trailer */struct trrw {	u_long	memadr;		/* memory address */	u_long	wcount;		/* 16 bit word count */	dskadr	disk;		/* disk address */};/* scatter/gather trailer */#define	VDMAXPAGES	(MAXPHYS / NBPG)struct trsg {	struct	trrw start_addr;	struct addr_chain {		u_long	nxt_addr;		u_long	nxt_len;	} addr_chain[VDMAXPAGES + 1];};/* seek trailer format */struct trseek {	dskadr	skaddr;};/* format trailer */struct trfmt {	char	*addr;		/* data buffer to be filled on sector*/	long	nsectors;	/* # of sectors to be formatted */	dskadr	disk;		/* disk physical address info */	dskadr  hdr;		/* header address info */};/* reset/configure trailer */struct treset {	long	ncyl;		/* # cylinders */	long	nsurfaces;	/* # surfaces */	long	nsectors;	/* # sectors */	long	slip_sec;	/* # of slip sectors */	long	recovery;	/* recovery flags */};/* ident trailer */struct trid {	long	name;	long	rev;	long	date;};/* * DCB layout. */struct dcb {	struct	dcb *nxtdcb;	/* next dcb */	short	intflg;		/* interrupt settings and flags */	short	opcode;		/* DCB command code etc... */	long	operrsta;	/* error & status info */	short	fill;		/* not used */	char	devselect;	/* drive selection */	char	trailcnt;	/* trailer Word Count */	long	err_memadr;	/* error memory address */	u_char	err_code;	/* error codes for SMD/E */	char	fill2;		/* not used */	short	err_wcount;	/* error word count */	char	err_trk;	/* error track/sector */	char	err_sec;	/* error track/sector */	short	err_cyl;	/* error cylinder adr */	union {		struct	trid idtrail;	/* ident command trailer */		struct	trseek sktrail;	/* seek command trailer */		struct	trsg sgtrail;	/* scatter/gather trailer */		struct	trrw rwtrail;	/* read/write trailer */		struct	trfmt fmtrail;	/* format trailer */		struct	treset rstrail;	/* reset/configure trailer */	} trail;};/* * smaller DCB with seek trailer only (no scatter-gather). */struct skdcb {	struct	dcb *nxtdcb;	/* next dcb */	short	intflg;		/* interrupt settings and flags */	short	opcode;		/* DCB command code etc... */	long	operrsta;	/* error & status info */	short	fill;		/* not used */	char	devselect;	/* drive selection */	char	trailcnt;	/* trailer Word Count */	long	err_memadr;	/* error memory address */	u_char	err_code;	/* error codes for SMD/E */	char	fill2;		/* not used */	short	err_wcount;	/* error word count */	char	err_trk;	/* error track/sector */	char	err_sec;	/* error track/sector */	short	err_cyl;	/* error cylinder adr */	union {		struct	trseek sktrail;	/* seek command trailer */	} trail;};/* * DCB command codes. */#define	VDOP_RD		0x80		/* read data */#define	VDOP_FTR	0xc0		/* full track read */#define	VDOP_RAS	0x90		/* read and scatter */#define	VDOP_RDRAW	0x600		/* read unformatted disk sector */#define	VDOP_CMP	0xa0		/* compare */#define	VDOP_FTC	0xe0		/* full track compare */#define	VDOP_RHDE	0x180		/* read header, data & ecc */#define	VDOP_WD		0x00		/* write data */#define	VDOP_FTW	0x40		/* full track write */#define	VDOP_WTC	0x20		/* write then compare */#define	VDOP_FTWTC	0x60		/* full track write then compare */#define	VDOP_GAW	0x10		/* gather and write */#define	VDOP_WDE	0x100		/* write data & ecc */#define	VDOP_FSECT	0x900		/* format sector */#define	VDOP_GWC	0x30		/* gather write & compare */#define	VDOP_START	0x800		/* start drives */#define	VDOP_RELEASE	0xa00		/* stop drives */#define	VDOP_SEEK	0xb00		/* seek */#define	VDOP_INIT	0xc00		/* initialize controller */#define	VDOP_DIAG	0xd00		/* diagnose (self-test) controller */#define	VDOP_CONFIG	0xe00		/* reset & configure drive */#define	VDOP_STATUS	0xf00		/* get drive status */#define	VDOP_IDENT	0x700		/* identify controller */#define	VDOP_PROBE	0x500		/* probe drives and update status */#define	VDOP_ABORT	0x80000000	/* abort current command *//* * DCB status definitions. */#define	DCBS_HCRC	0x00000001	/* header crc error */#define	DCBS_HCE	0x00000002	/* header compare error */#define	DCBS_WPT	0x00000004	/* drive write protected */#define	DCBS_CHE	0x00000008	/* controller hardware error */#define	DCBS_SKI	0x00000010	/* seek incomplete */#define	DCBS_UDE	0x00000020	/* uncorrectable data error */#define	DCBS_OCYL	0x00000040	/* off cylinder */#define	DCBS_NRDY	0x00000080	/* drive not ready */#define	DCBS_ATA	0x00000100	/* alternate track accessed */#define	DCBS_SKS	0x00000200	/* seek started */#define	DCBS_IVA	0x00000400	/* invalid disk address error */#define	DCBS_NEM	0x00000800	/* non-existant memory error */#define	DCBS_DPE	0x00001000	/* memory data parity error */#define	DCBS_DCE	0x00002000	/* data compare error */#define	DCBS_DDI	0x00004000	/* ddi ready */#define	DCBS_OAB	0x00008000	/* operation aborted */#define	DCBS_DSE	0x00010000	/* data strobe early */#define	DCBS_DSL	0x00020000	/* data strobe late */#define	DCBS_TOP	0x00040000	/* track offset plus */#define	DCBS_TOM	0x00080000	/* track offset minus */#define	DCBS_CCD	0x00100000	/* controller corrected data */#define	DCBS_HARD	0x00200000	/* hard error */#define	DCBS_SOFT	0x00400000	/* soft error (retry succesful) */#define	DCBS_ERR	0x00800000	/* composite error */#define DCBS_IVC	0x01000000	/* invalid command error *//* bits 24-27 unused */#define	DCBS_BSY	0x10000000	/* controller busy */#define	DCBS_ICC	0x60000000	/* interrupt cause code */#define	DCBS_INT	0x80000000	/* interrupt generated for this dcb */#define	VDERRBITS	"\20\1HCRC\2HCE\3WPT\4CHE\5DSKI\6UDE\7OCYL\10NRDY\\11ATA\12SKS\13IVA\14NEM\15DPE\16DCE\17DDI\20OAB\21DSE\22DSL\23TOP\24TOM\\25CCD\26HARD\27SOFT\30ERR\31IVC\35ABORTED\36FAIL\37COMPLETE\40STARTED"/* drive related errors */#define	VDERR_DRIVE	(DCBS_SKI|DCBS_OCYL|DCBS_NRDY|DCBS_IVA)/* controller related errors */#define	VDERR_CTLR	(DCBS_CHE|DCBS_OAB|DCBS_IVC|DCBS_NEM)/* potentially recoverable errors */#define	VDERR_RETRY \    (VDERR_DRIVE|VDERR_CTLR|DCBS_DCE|DCBS_DPE|DCBS_HCRC|DCBS_HCE)/* uncorrected data errors */#define	VDERR_HARD	(VDERR_RETRY|DCBS_WPT|DCBS_UDE)/* * DCB status codes. */#define	DCBS_ABORT	0x10000000	/* dcb aborted */#define	DCBS_FAIL	0x20000000	/* dcb unsuccesfully completed */#define	DCBS_DONE	0x40000000	/* dcb complete */#define	DCBS_START	0x80000000	/* dcb started *//* * DCB interrupt control. */#define	DCBINT_NONE	0x0		/* don't interrupt */#define	DCBINT_ERR	0x2		/* interrupt on error */#define	DCBINT_SUC	0x1		/* interrupt on success */#define	DCBINT_DONE	(DCBINT_ERR|DCBINT_SUC)#define	DCBINT_PBA	0x4		/* proceed before acknowledge *//* * Sector formats. */typedef union {	struct {		dskadr	hdr_addr;		short	smd_crc;	} smd;	struct {		dskadr	physical;		dskadr	logical;		long	smd_e_crc;	} smd_e;} fmt_hdr;/* Sector Header bit assignments */#define	VDMF	0x8000		/* Manufacturer Fault 1=good sector */#define	VDUF	0x4000		/* User Fault 1=good sector */#define	VDALT	0x2000		/* Alternate Sector 1=alternate */#define	VDWPT	0x1000		/* Write Protect 1=Read Only Sector *//* input register assignments for DIOCWFORMAT ioctl */#define	dk_op		df_reg[0]	/* opcode */#define	dk_althdr	df_reg[1]	/* alt. sect. dskadr, in an int! */#define	dk_fmtflags	df_reg[2]	/* header format flags *//* output register assignments for DIOCWFORMAT ioctl */#define	dk_operrsta	df_reg[0]	/* dcb operrsta */#define	dk_ecodecnt	df_reg[1]	/* smd-e ecode and error word count */#define	dk_ecode(ecodecnt)	((u_long)(ecodecnt) >> 2)#define	dk_errcnt(ecodecnt)	(((ecodecnt) & 0xffff) << 1)#define	dk_erraddr	df_reg[2]	/* error dskadr, in an int! */

⌨️ 快捷键说明

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