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

📄 scsireg.h

📁 早期freebsd实现
💻 H
字号:
/* * Copyright (c) 1992, 1993 *	The Regents of the University of California.  All rights reserved. * * This code is derived from software contributed to Berkeley by * Sony Corp. and Kazumasa Utashiro of Software Research Associates, Inc. * * 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. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. * * from: $Hdr: scsireg.h,v 4.300 91/06/09 06:38:12 root Rel41 $ SONY * *	@(#)scsireg.h	8.1 (Berkeley) 6/11/93 *//* *	scsireg.h */#ifndef __SCSIREG__#define __SCSIREG__ 1/* *	initiator status byte bit image */#define	INST_EP		0x80		/* End of Process */#define INST_WR		0x40		/* Waiting Reselection */#define	INST_IP		0x20		/* In Process */#define	INST_WAIT	0x10		/* Waiting Bus free */#define	INST_LB		0x8		/* Loss of BUSY */#define	INST_TO		0x4		/* Time Out */#define	INST_PRE	0x2		/* PaRameter Error */#define	INST_HE		0x1		/* Hard Error */#define	INSTERMASK	0x7/* *	target status byte bit image */#define	VENDOR		0x61#define	TGSTMASK	0x1e#define	TGST_RSVCFLCT	0x18#define	TGST_INTERMED	0x10#define	TGST_BUSY	0x8#define	TGST_CC		0x2#define	TGST_GOOD	0x0#define	TS_MAPPED_PIO	0x01		/* program I/O with map */#define	TS_CONTR_ON	0x02		/* contiguous transfer on */#define	TS_CONTR_OFF	0x04		/* contiguous transfer off */#define	TS_BYTE_DMA	0x08		/* DMA transfer(byte access) */#define	TS_LONG_DMA	0x10		/* DMA transfer(long access) *//* *	message byte */#define MSG_IDENT	0x80#define MSG_RESELEN	0x40#define MSG_CCOMP	0#define	MSG_EXTND	1#define MSG_SDP		2#define MSG_RDP		3#define MSG_DCNT	4#define MSG_IDE		5#define MSG_ABORT	6#define MSG_MREJ	7#define MSG_NOP		8#define MSG_PERROR	9/* *	message identify byte bit image */#define	IDT_DISCON	0x40#define	IDT_DRMASK	0x7/* *	scsi command opcodes */#define SCOP_TST	0x00#define SCOP_REZERO	0x01#define	SCOP_REWIND	0x01#define SCOP_RSENSE	0x03#define SCOP_FMT	0x04#define SCOP_RBLIM	0x05#define SCOP_SPARAM	0x06#define SCOP_RASBLK	0x07#define SCOP_READ	0x08#define SCOP_MOERASE	0x09#define SCOP_WRITE	0x0a#define SCOP_SEEK	0x0b#define	SCOP_MERASE	0x0e#define	SCOP_WFMARK	0x10#define	SCOP_SPACE	0x11#define SCOP_INQUIRY	0x12#define	SCOP_SVERIFY	0x13#define	SCOP_RBDATA	0x14#define SCOP_MSELECT	0x15#define	SCOP_ERASE	0x19#define SCOP_MSENSE	0x1a#define SCOP_STST	0x1b#define	SCOP_LOAD	0x1b#define SCOP_RECDIAG	0x1c#define SCOP_SNDDIAG	0x1d#define	SCOP_MEDRMV	0x1e#define SCOP_RCAP	0x25#define SCOP_EREAD	0x28#define SCOP_EWRITE	0x2a#define	SCOP_BSSRCH	0x2c#define	SCOP_WSSRCH	0x2d#define	SCOP_WRTVRFY	0x2e#define SCOP_VERIFY	0x2f#define SCOP_RDL	0x37#define SCOP_WBUF	0x3b#define SCOP_RBUF	0x3c#define SCOP_EJECT	0xc0#define SCOP_EESENSE	0xc1#define SCOP_READTOC	0xc1#define SCOP_READID	0xc2#define SCOP_ADP	0xc2#define SCOP_READQ	0xc2#define SCOP_BLANKS	0xc3#define SCOP_READHEAD	0xc3#define SCOP_PBSTS	0xc4#define SCOP_RCVDISK	0xc4#define SCOP_PAUSE	0xc5#define SCOP_PLAYTRACK	0xc6#define SCOP_PLAYMSF	0xc7#define SCOP_PLAYAUDIO	0xc8#define SCOP_ERASED	0xe7#define SCOP_RESET	0xff/* *	other definition */#define	ON	1#define	OFF	0/* *	scsi internal parameter block */struct scsi {/*00*/	u_char	sc_istatus;/*01*/	u_char	sc_tstatus;/*02*/	u_char	sc_identify;/*03*/	u_char	sc_message;/*04*/	u_int	sc_mpages;/*08*/	u_int	sc_bytesec;/*0c*/	u_char	*sc_cpoint;/*10*/	u_int	sc_ctrnscnt;/*14*/	struct sc_map *sc_map;	union {		struct	un_type0 {/*18*/			u_int		t0_opcode : 8;/*19*/			u_int		t0_lun	  : 3;/*19*/			u_int		t0_lad    : 21;/*1c*/			u_char		t0_count;/*1d*/			u_char		t0_ctrl;/*1e*/		} un_type0;		struct	un_tuio {/*18*/			u_char		tu_opcode;/*19*/			u_char		tu_lun	  : 3;/*19*/			u_char		tu_resved : 3;/*19*/			u_char		tu_code	  : 2;/*1a*/			u_char		tu_count1;/*1b*/			u_char		tu_count2;/*1c*/			u_char		tu_count3;/*1d*/			u_char		tu_ctrl;/*1e*/		} un_tuio;		struct	un_mtio {/*18*/			u_char		mt_opcode;/*19*/			u_char		mt_lun	  : 3;/*19*/			u_char		mt_resvd  : 2;/*19*/			u_char		mt_st	  : 1;/*19*/			u_char		mt_code	  : 2;/*1a*/			u_char		mt_len1;/*1b*/			u_char		mt_len2;/*1c*/			u_char		mt_len3;/*1d*/			u_char		mt_ctrl;/*1e*/		} un_mtio;		struct	un_type1 {/*18*/			u_char		t1_opcode;/*19*/			u_char		t1_lun    : 3;/*19*/			u_char		t1_rsvd   : 4;/*19*/			u_char		t1_relat  : 1;/*1a*/			u_short		t1_ladhi;/*1c*/			u_short		t1_ladlo;/*1e*/			u_char		t1_p1;/*1f*/			u_char		t1_p2;/*20*/			u_char		t1_p3;/*21*/			u_char		t1_ctrl;/*22*/		} un_type1;/*18*/		u_char	un_reserved[12];/*24*/	} sc_cdb;/*24*/	u_char sc_param[20];	/*38*/	int	sc_hbinfo;		/* Copy of the hb_ctlr->hm_hbinfo *//*3c*/	u_int	sc_ctag;/*40*/	u_int	sc_coffset;/*44*/};#define	sc_opcode	sc_cdb.un_type0.t0_opcode#define	sc_lun		sc_cdb.un_type0.t0_lun#define	sc_lad		sc_cdb.un_type0.t0_lad#define	sc_count	sc_cdb.un_type0.t0_count#define	sc_nsect	sc_cdb.un_type0.t0_count#define	sc_switch	sc_cdb.un_type0.t0_count#define	sc_ctrl		sc_cdb.un_type0.t0_ctrl#define	sc_tucode	sc_cdb.un_tuio.tu_code#define	sc_tucount1	sc_cdb.un_tuio.tu_count1#define	sc_tucount2	sc_cdb.un_tuio.tu_count2#define	sc_tucount3	sc_cdb.un_tuio.tu_count3#define	sc_tunsect1	sc_cdb.un_tuio.tu_count1#define	sc_tunsect2	sc_cdb.un_tuio.tu_count2#define	sc_tunsect3	sc_cdb.un_tuio.tu_count3#define	sc_mtst		sc_cdb.un_mtio.mt_st#define	sc_mtcode	sc_cdb.un_mtio.mt_code#define	sc_mtlen1	sc_cdb.un_mtio.mt_len1#define	sc_mtlen2	sc_cdb.un_mtio.mt_len2#define	sc_mtlen3	sc_cdb.un_mtio.mt_len3#define	sc_mtcount1	sc_cdb.un_mtio.mt_len1#define	sc_mtcount2	sc_cdb.un_mtio.mt_len2#define	sc_mtcount3	sc_cdb.un_mtio.mt_len3#define	sc_mtnsect1	sc_cdb.un_mtio.mt_len1#define	sc_mtnsect2	sc_cdb.un_mtio.mt_len2#define	sc_mtnsect3	sc_cdb.un_mtio.mt_len3#define	sc_mtctrl	sc_cdb.un_mtio.mt_ctrl#define	sc_mtfxd	sc_mtcode#define	sc_mtimm	sc_mtcode#define	sc_mtlng	sc_mtcode#define	sc_ladhi	sc_cdb.un_type1.t1_ladhi#define	sc_ladlo	sc_cdb.un_type1.t1_ladlo#define	sc_pmi		sc_cdb.un_type1.t1_p3#define	scop_load(a,b,c,d,e)	scop_stst(a,b,c,d,e)/* *	tape unit space operation code definitions */#define	SCSC_DATA	0#define	SCSC_FM		1#define	SCSC_SQFM	2#define	SCSC_EOD	3/* *	scsi map table format */#ifdef news3400#define	NSCMAP	120#endif#ifdef news3800#define	NSCMAP	129#endifstruct sc_map {/*000*/	unsigned	mp_offset;/*004*/	unsigned	mp_pages;/*008*/	unsigned	mp_addr[NSCMAP];};/* *	scsi nonextended sense data */struct sc_nextnd {/*00*/	u_int		scn_advalid : 1;/*00*/	u_int		scn_ecode   : 7;/*01*/	u_int		scn_resvd   : 3;/*01*/	u_int		scn_secno   : 21;/*04*/};/* *	scsi extended sense data */struct sc_extnd {/*00*/	u_char		sce_advalid : 1;/*00*/	u_char		sce_extend  : 7;/*01*/	u_char		sce_segno;/*02*/	u_char		sce_fm	    : 1;/*02*/	u_char		sce_eom	    : 1;/*02*/	u_char		sce_ili	    : 1;/*02*/	u_char		sce_resvd   : 1;/*02*/	u_char		sce_skey    : 4;/*03*/	u_char		sce_infob1;/*04*/	u_char		sce_infob2;/*05*/	u_char		sce_infob3;/*06*/	u_char		sce_infob4;/*07*/	u_char		sce_addlen;	union {		struct un_ehd {/*08*/			u_short		ehd_resvd1;/*0a*/			u_short		ehd_resvd2;/*0c*/			u_char		ehd_ecode;/*0d*/			u_char		ehd_resvd3;/*0e*/			u_char		ehd_fru;/*0f*/			u_char		ehd_fpv	   : 1;/*0f*/			u_char		ehd_cd	   : 1;/*0f*/			u_char		ehd_resvd4 : 2;/*0f*/			u_char		ehd_bpv	   : 1;/*0f*/			u_char		ehd_bitpnt : 3;/*10*/			u_short		ehd_fldpnt;/*12*/		} un_ehd;		struct un_etu {/*08*/			u_char		etu_ecode;/*09*/			u_char		etu_nerrhi;/*0a*/			u_char		etu_nerrlo;/*0b*/		} un_etu;		struct un_emt {/*08*/			u_short		emt_estat;/*0a*/			u_char		emt_resvd1;/*0b*/			u_char		emt_totlrtry;/*0c*/			u_short		emt_resvd2;/*0e*/			u_short		emt_resvd3;/*10*/			u_char		emt_resvd4;/*11*/			u_char		emt_ecode;/*12*/		} un_emt;		struct un_ewo {/*08*/			u_char		ewo_resvd1;/*09*/			u_char		ewo_resvd2;/*0a*/			u_char		ewo_resvd3;/*0b*/			u_char		ewo_sadvalid : 1;/*0b*/			u_char		ewo_secode   : 7;/*0c*/			u_char		ewo_saddr1;/*0d*/			u_char		ewo_saddr2;/*0e*/			u_char		ewo_saddr3;/*0f*/			u_char		ewo_saddr4;/*10*/			u_char		ewo_resvd4;/*11*/			u_char		ewo_dadvalid : 1;/*11*/			u_char		ewo_decode   : 7;/*12*/			u_char		ewo_daddr1;/*13*/			u_char		ewo_daddr2;/*14*/			u_char		ewo_daddr3;/*15*/			u_char		ewo_daddr4;/*16*/		} un_ewo;		struct un_eod {/*08*/			u_char		eod_resvd1;/*09*/			u_char		eod_resvd2;/*0a*/			u_char		eod_resvd3;/*0b*/			u_char		eod_resvd4;/*0c*/			u_char		eod_ecode;/*0d*/			u_char		eod_resvd5;/*0e*/			u_char		eod_resvd6;/*0f*/			u_char		eod_resvd7;/*10*/			u_char		eod_resvd8;/*11*/			u_char		eod_resvd9;/*12*/		} un_eod;/*08*/		u_char un_data[24];/*20*/	} sce_add;/*20*/};#define	sce_hdecode	sce_add.un_ehd.ehd_ecode #define	sce_tuecode	sce_add.un_etu.etu_ecode#define	sce_tunerrhi	sce_add.un_etu.etu_nerrhi#define	sce_tunerrlo	sce_add.un_etu.etu_nerrlo#define	sce_mtestat	sce_add.un_emt.emt_estat#define	sce_mtecode	sce_add.un_emt.emt_ecode#define	sce_odecode	sce_add.un_eod.eod_ecode#define	sce_ascq	sce_add.un_ehd.ehd_resvd3#define	sce_sksv	sce_add.un_ehd.ehd_fpv#define	sce_actretry	sce_add.un_ehd.ehd_fldpnt/* *	scsi inquiry response data */struct sc_inq {/*00*/	u_char		sci_devtype;/*01*/	u_char		sci_qual;/*02*/	u_char		sci_version;/*03*/	u_char		sci_resvd1;/*04*/	u_char		sci_ninfo;/*05*/	u_char		sci_drinfo;/*06*/	u_char		sci_firmrev;/*07*/	u_char		sci_ready;/*08*/	u_char		sci_vendid[8];/*10*/	u_char		sci_prodid[16];/*20*/	u_char		sci_revision[4];/*24*/};/* *	scsi read capacity data */struct sc_rcap {/*00*/	u_int		scr_nblock;/*04*/	u_int		scr_blocklen;/*08*/};/* *	scsi mode sense/select data */struct sc_mdata {/*00*/	u_char	scm_len;/*01*/	u_char	scm_type;/*02*/	u_char	scm_flags1;/*03*/	u_char	scm_dlen;/*04*/	u_int	scm_dens	: 8;/*05*/	u_int	scm_nblock	: 24;/*08*/	u_int	scm_resvd1	: 8;/*09*/	u_int	scm_bsize	: 24;/*0c*/	u_char	scm_flags2;/*0d*/	u_char	scm_resvd2;/*0e*/	u_char	scm_resvd3;/*0f*/	u_char	scm_maxrtry;/*10*/};#define	scm_tdens	scm_flags2/* *	bits of scm_flags1 */#define	SCM1_WRP	0x80#define	SCM1_BUFM	0x10#define	SCM1_SPD90	0x02/* *	scm_type */#define	SCMT_DEFAULT	0x0#define	SCMT_150_600	0x80#define	SCMT_300_450	0x81/* *	scm_dens */#define	SCMD_QIC_24_9	0x0	/* This may be 0x5 */#define	SCMD_QIC_11_4	0x4#define	SCMD_QIC_11_9	0x84#define	SCMD_QIC_120_15	0xf#define	SCMD_QIC_150_18	0x10#define	SCMD_DEFAULT	0x00#define	SCMD_800_BPI	0x01#define	SCMD_1600_BPI	0x02#define	SCMD_6250_BPI	0x03#define	SCMD_3200_BPI	0x06#define	SCMD_NEWTAPE	0x80#define	SCMD_NOTAPE	0xff/* *	bits of scm_flags2 */#define	SCM2_DEA	0x04#define	SCM2_AUI	0x02#define	SCM2_SEC	0x01/* *	scsi reassign block perameter list */struct sc_rab {/*00*/	u_short	sca_resved;/*02*/	u_short	sca_dllen;/*04*/	u_int	sca_dlad[4];/*14*/};#ifdef CPU_DOUBLE# ifdef mips#  define	ipc_phys(x)	(caddr_t)K0_TT0(x)# else#  define	ipc_phys(x)	(caddr_t)((int)(x) & ~0x80000000)# endif# ifdef news3800#  define	splsc		spl4#  define	splscon		spl3# endif#endif /* CPU_DOUBLE */#ifdef CPU_SINGLE# define	ipc_phys(x)	(caddr_t)(x)# ifdef news3400#  define	splsc		spl3#  define	splscon		spl2# else#  define	splsc		spl4#  define	splscon		spl3# endif#endif /* CPU_SINGLE */#define	SCSI_INTEN	1#define	SCSI_INTDIS	0struct scintsw {/*00*/	int	(*sci_inthandler)();	/* pointer to interrupt handler *//*04*/	int	sci_ctlr;		/* controller number *//*08*/};struct sc_data {/*00*/	caddr_t	scd_scaddr;		/* pointer to struct scsi *//*04*/	caddr_t	scd_vaddr;		/* pointer to buffer address *//*08*/	int	scd_count;		/* buffer size *//*0c*/	int	scd_rw;			/* R/W flag see buf.h *//*10*/	struct proc *scd_procp;		/* user prrocess *//*14*/};#endif /* !__SCSIREG__ */

⌨️ 快捷键说明

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