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

📄 scgcmd.h

📁 读取/刻录光盘的程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/* @(#)scgcmd.h	2.14 98/11/29 Copyright 1986 J. Schilling *//* *	Definitions for the SCSI general driver 'scg' * *	Copyright (c) 1986 J. Schilling *//* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING.  If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */#ifndef	_SCGCMD_H#define	_SCGCMD_H#include <utypes.h>#include <btorder.h>#if	defined(_BIT_FIELDS_LTOH)	/* Intel byteorder */#elif	defined(_BIT_FIELDS_HTOL)	/* Motorola byteorder */#else /* * #error will not work for all compilers (e.g. sunos4) * The following line will abort compilation on all compilers * if none of the above is defines. And that's  what we want. */error  One of _BIT_FIELDS_LTOH or _BIT_FIELDS_HTOL must be defined#endif/* * SCSI status completion block. */#define	SCSI_EXTENDED_STATUS#if	defined(_BIT_FIELDS_LTOH)	/* Intel byteorder */struct	scsi_status {	Ucbit	vu_00	: 1;	/* vendor unique */	Ucbit	chk	: 1;	/* check condition: sense data available */	Ucbit	cm	: 1;	/* condition met */	Ucbit	busy	: 1;	/* device busy or reserved */	Ucbit	is	: 1;	/* intermediate status sent */	Ucbit	vu_05	: 1;	/* vendor unique */#define st_scsi2	vu_05	/* SCSI-2 modifier bit */	Ucbit	vu_06	: 1;	/* vendor unique */	Ucbit	st_rsvd	: 1;	/* reserved */#ifdef	SCSI_EXTENDED_STATUS#define	ext_st1	st_rsvd		/* extended status (next byte valid) */	/* byte 1 */	Ucbit	ha_er	: 1;	/* host adapter detected error */	Ucbit	reserved: 6;	/* reserved */	Ucbit	ext_st2	: 1;	/* extended status (next byte valid) */	/* byte 2 */	u_char	byte2;		/* third byte */#endif	/* SCSI_EXTENDED_STATUS */};#else	/* Motorola byteorder */struct	scsi_status {	Ucbit	st_rsvd	: 1;	/* reserved */	Ucbit	vu_06	: 1;	/* vendor unique */	Ucbit	vu_05	: 1;	/* vendor unique */#define st_scsi2	vu_05	/* SCSI-2 modifier bit */	Ucbit	is	: 1;	/* intermediate status sent */	Ucbit	busy	: 1;	/* device busy or reserved */	Ucbit	cm	: 1;	/* condition met */	Ucbit	chk	: 1;	/* check condition: sense data available */	Ucbit	vu_00	: 1;	/* vendor unique */#ifdef	SCSI_EXTENDED_STATUS#define	ext_st1	st_rsvd		/* extended status (next byte valid) */	/* byte 1 */	Ucbit	ext_st2	: 1;	/* extended status (next byte valid) */	Ucbit	reserved: 6;	/* reserved */	Ucbit	ha_er	: 1;	/* host adapter detected error */	/* byte 2 */	u_char	byte2;		/* third byte */#endif	/* SCSI_EXTENDED_STATUS */};#endif/* * OLD Standard (Non Extended) SCSI Sense. Used mainly by the * Adaptec ACB 4000 which is the only controller that * does not support the Extended sense format. */#if	defined(_BIT_FIELDS_LTOH)	/* Intel byteorder */struct	scsi_sense {		/* scsi sense for error classes 0-6 */	Ucbit	code	: 7;	/* error class/code */	Ucbit	adr_val	: 1;	/* sense data is valid */#ifdef	comment	Ucbit	high_addr:5;	/* high byte of block addr */	Ucbit	rsvd	: 3;#else	u_char	high_addr;	/* high byte of block addr */#endif	u_char	mid_addr;	/* middle byte of block addr */	u_char	low_addr;	/* low byte of block addr */};#else	/* Motorola byteorder */struct	scsi_sense {		/* scsi sense for error classes 0-6 */	Ucbit	adr_val	: 1;	/* sense data is valid */	Ucbit	code	: 7;	/* error class/code */#ifdef	comment	Ucbit	rsvd	: 3;	Ucbit	high_addr:5;	/* high byte of block addr */#else	u_char	high_addr;	/* high byte of block addr */#endif	u_char	mid_addr;	/* middle byte of block addr */	u_char	low_addr;	/* low byte of block addr */};#endif/* * SCSI extended sense parameter block. */#ifdef	comment#define SC_CLASS_EXTENDED_SENSE 0x7     /* indicates extended sense */#endif#if	defined(_BIT_FIELDS_LTOH)	/* Intel byteorder */struct	scsi_ext_sense {	/* scsi extended sense for error class 7 */	/* byte 0 */	Ucbit	type	: 7;	/* fixed at 0x70 */	Ucbit	adr_val	: 1;	/* sense data is valid */	/* byte 1 */	u_char	seg_num;	/* segment number, applies to copy cmd only */	/* byte 2 */	Ucbit	key	: 4;	/* sense key, see below */	Ucbit		: 1;	/* reserved */	Ucbit	ili	: 1;	/* incorrect length indicator */	Ucbit	eom	: 1;	/* end of media */	Ucbit	fil_mk	: 1;	/* file mark on device */	/* bytes 3 through 7 */	u_char	info_1;		/* information byte 1 */	u_char	info_2;		/* information byte 2 */	u_char	info_3;		/* information byte 3 */	u_char	info_4;		/* information byte 4 */	u_char	add_len;	/* number of additional bytes */	/* bytes 8 through 13, CCS additions */	u_char	optional_8;	/* CCS search and copy only */	u_char	optional_9;	/* CCS search and copy only */	u_char	optional_10;	/* CCS search and copy only */	u_char	optional_11;	/* CCS search and copy only */	u_char 	sense_code;	/* sense code */	u_char	qual_code;	/* sense code qualifier */	u_char	fru_code;	/* Field replacable unit code */	Ucbit	bptr	: 3;	/* bit pointer for failure (if bpv) */	Ucbit	bpv	: 1;	/* bit pointer is valid */	Ucbit		: 2;	Ucbit	cd	: 1;	/* pointers refer to command not data */	Ucbit	sksv	: 1;	/* sense key specific valid */	u_char	field_ptr[2];	/* field pointer for failure */	u_char	add_info[2];	/* round up to 20 bytes */};#else	/* Motorola byteorder */struct	scsi_ext_sense {	/* scsi extended sense for error class 7 */	/* byte 0 */	Ucbit	adr_val	: 1;	/* sense data is valid */	Ucbit	type	: 7;	/* fixed at 0x70 */	/* byte 1 */	u_char	seg_num;	/* segment number, applies to copy cmd only */	/* byte 2 */	Ucbit	fil_mk	: 1;	/* file mark on device */	Ucbit	eom	: 1;	/* end of media */	Ucbit	ili	: 1;	/* incorrect length indicator */	Ucbit		: 1;	/* reserved */	Ucbit	key	: 4;	/* sense key, see below */	/* bytes 3 through 7 */	u_char	info_1;		/* information byte 1 */	u_char	info_2;		/* information byte 2 */	u_char	info_3;		/* information byte 3 */	u_char	info_4;		/* information byte 4 */	u_char	add_len;	/* number of additional bytes */	/* bytes 8 through 13, CCS additions */	u_char	optional_8;	/* CCS search and copy only */	u_char	optional_9;	/* CCS search and copy only */	u_char	optional_10;	/* CCS search and copy only */	u_char	optional_11;	/* CCS search and copy only */	u_char 	sense_code;	/* sense code */	u_char	qual_code;	/* sense code qualifier */	u_char	fru_code;	/* Field replacable unit code */	Ucbit	sksv	: 1;	/* sense key specific valid */	Ucbit	cd	: 1;	/* pointers refer to command not data */	Ucbit		: 2;	Ucbit	bpv	: 1;	/* bit pointer is valid */	Ucbit	bptr	: 3;	/* bit pointer for failure (if bpv) */	u_char	field_ptr[2];	/* field pointer for failure */	u_char	add_info[2];	/* round up to 20 bytes */};#endif/* * SCSI Operation codes.  */#define SC_TEST_UNIT_READY	0x00#define SC_REZERO_UNIT		0x01#define SC_REQUEST_SENSE	0x03#define SC_FORMAT		0x04#define SC_FORMAT_TRACK		0x06#define SC_REASSIGN_BLOCK	0x07		/* CCS only */#define SC_SEEK			0x0b#define SC_TRANSLATE		0x0f		/* ACB4000 only */#define SC_INQUIRY		0x12		/* CCS only */#define SC_MODE_SELECT		0x15#define SC_RESERVE		0x16#define SC_RELEASE		0x17#define SC_MODE_SENSE		0x1a#define SC_START		0x1b#define SC_READ_DEFECT_LIST	0x37		/* CCS only, group 1 */#define SC_READ_BUFFER          0x3c            /* CCS only, group 1 */	/*	 * Note, these two commands use identical command blocks for all 	 * controllers except the Adaptec ACB 4000 which sets bit 1 of byte 1.	 */#define SC_READ			0x08#define SC_WRITE		0x0a#define SC_EREAD		0x28		/* 10 byte read */#define SC_EWRITE		0x2a		/* 10 byte write */#define SC_WRITE_VERIFY		0x2e            /* 10 byte write+verify */#define SC_WRITE_FILE_MARK	0x10#define SC_UNKNOWN		0xff		/* cmd list terminator *//* * Messages that SCSI can send. */#define SC_COMMAND_COMPLETE	0x00#define SC_SYNCHRONOUS		0x01#define SC_SAVE_DATA_PTR	0x02#define SC_RESTORE_PTRS		0x03#define SC_DISCONNECT		0x04#define SC_ABORT		0x06#define SC_MSG_REJECT		0x07#define SC_NO_OP		0x08#define SC_PARITY		0x09#define SC_IDENTIFY		0x80#define SC_DR_IDENTIFY		0xc0#define SC_DEVICE_RESET		0x0c/* * Standard SCSI control blocks.

⌨️ 快捷键说明

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