📄 streg.h
字号:
/* @(#)streg.h 1.1 92/07/30 Copyr 1987 Sun Micro *//* * Defines for SCSI tape drives. */#define ST_SYSGEN /* Enable Sysgen controller support */#define MAX_ST_DEV_SIZE 65535 /* 64KB limit for variable length I/O */#define MAX_AUTOLOAD_DELAY 60 /* 120 Sec. Auto-load maximum delay */#define ST_AUTODEN_LIMIT 1 /* Auto density file limit */#ifdef lint#define ST_SYSGEN /* Enable Sysgen controller support */#define ST_AUTOPOSITION /* Enable seek support */#define ST_TIMEOUT /* Enable command timeouts *//*#define sun2 /* Enable sun2 support *//*#define CPU_SUN2_120 2 /* " " " */#endif lint#define CLOSED 0#define CLOSING 1#define OPEN_FAILED_LOADING 2#define OPEN_FAILED_TAPE 3#define OPEN_FAILED 4#define OPENING_SYSGEN 5#define OPENING_DELAY 6#define OPENING 7#define APPEND_TESTING 8#define DENSITY_CHANGING 9#define RETRYING_CMD 10#define SENSING 11#define OPEN 12/* * Eof codes. */#define ST_NO_EOF 0x00#define ST_EOF 0x01#define ST_EOF_PENDING 0x02#define ST_EOT ST_EOF/* * Operation codes. */#define SC_REWIND 0x01#define SC_QIC02 0x0D#define SC_READ_XSTATUS_CIPHER 0xe0 /* Sun-2, Cipher tape only */#define SC_SPACE_REC 0x11#define SC_ERASE_TAPE 0x19#define SC_LOAD 0x1B#define SC_UNLOAD 0x80 /* phony - for int use only */#define SC_BSPACE_FILE 0x81 /* phony - for int use only */#define SC_SPACE_FILE 0x82 /* phony - for int use only */#define SC_RETENSION 0x83 /* phony - for int use only */#define SC_QIC11 0x84 /* phony - for int use only */#define SC_QIC24 0x85 /* phony - for int use only */#define SC_READ_APPEND 0x86 /* phony - for int use only *//* * Supported tape device types plus default type for opening. * Types 10 - 13, are special (ancient too) drives. * Types 14 - 1f, are 1/4-inch cartridge drives. * Types 20 - 28, are 1/2-inch cartridge or reel drives. * Types 28+, are rdat (vcr) drives. */#define ST_TYPE_INVALID 0x00#define ST_TYPE_SYSGEN1 0x10 /* Sysgen with QIC-11 only */#define ST_TYPE_SYSGEN 0x11 /* Sysgen with QIC-24 and QIC-11 */#define ST_TYPE_DEFAULT 0x12 /* Who knows ? */#define ST_TYPE_ADAPTEC 0x13 /* Adaptec */#define ST_TYPE_EMULEX 0x14 /* Emulex MT-02 */#define ST_TYPE_ARCHIVE 0x15 /* Archive QIC-150 */#define ST_TYPE_WANGTEK 0x16 /* Wangtek QIC-150 */#define ST_TYPE_ADSI 0x17 /* ADSI */#define ST_TYPE_CDC 0x20 /* CDC */#define ST_TYPE_FUJI 0x21 /* Fujitsu */#define ST_TYPE_KENNEDY 0x22 /* Kennedy */#define ST_TYPE_HP 0x23 /* HP */#define ST_TYPE_EXABYTE 0x28 /* Exabyte *//* * Misc defines specific to sysgen controllers */#define ST_SYSGEN_QIC11 0x26#define ST_SYSGEN_QIC24 0x27#define ST_SYSGEN_SENSE_LEN 16#define ST_SYSGEN_SENSE_BYTES 4/* * Misc defines specific to emulex controllers */#define ST_EMULEX_QIC11 0x84#define ST_EMULEX_QIC24 0x00#define ST_EMULEX_SENSE_LEN 12/* * defines for SCSI tape CDB. */#undef t_code#undef high_count#undef mid_count#undef low_countstruct scsi_cdb6 { /* scsi command description block */ u_char cmd; /* command code */ u_char lun : 3; /* logical unit number */ u_char t_code : 5; /* high part of address */ u_char high_count; /* middle part of address */ u_char mid_count; /* low part of address */ u_char low_count; /* block count */ u_char vu_57 : 1; /* vendor unique (byte 5 bit 7) */ u_char vu_56 : 1; /* vendor unique (byte 5 bit 6) */ u_char : 4; /* reserved */ u_char fr : 1; /* flag request (interrupt at completion) */ u_char link : 1; /* link (another command follows) */};/* * Parameter list for the MODE_SELECT and MODE_SENSE commands. * The parameter list contains a header, followed by zero or more * block descriptors, followed by vendor unique parameters, if any. * Note, only one 8-byte block descriptor is used for 1/2-inch SCSI * tape devices (e.g. CDC HI/TC, HP SCSI-2, and Kennedy). */#define MS_BD_LEN 8struct st_ms_mspl { u_char reserved1; /* reserved, sense data length */ u_char reserved2; /* reserved, medium type */ u_char wp :1; /* write protected */ u_char bufm :3; /* buffered mode */ u_char speed :4; /* speed */ u_char bd_len; /* block length in bytes */ u_char density; /* density code */ u_char high_nb; /* number of logical blocks on the medium */ u_char mid_nb; /* that are to be formatted with the density */ u_char low_nb; /* code and block length in block descriptor */ u_char reserved; /* reserved */ u_char high_bl; /* block length */ u_char mid_bl; /* " " */ u_char low_bl; /* " " */};struct st_ms_exabyte { u_char reserved1; /* reserved, sense data length */ u_char reserved2; /* reserved, medium type */ u_char wp :1; /* write protected */ u_char bufm :3; /* buffered mode */ u_char speed :4; /* speed */ u_char bd_len; /* block length in bytes */ u_char density; /* density code */ u_char high_nb; /* number of logical blocks on the medium */ u_char mid_nb; /* that are to be formatted with the density */ u_char low_nb; /* code and block length in block descriptor */ u_char reserved; /* reserved */ u_char high_bl; /* block length */ u_char mid_bl; /* " " */ u_char low_bl; /* " " */ u_char optional1; /* optional vendor unique byte */};/* * SCSI tape REQUEST SENSE parameter block. Note, * this structure should have an even number of bytes to * eliminate any byte packing problems with our host adapters. */struct st_sense { /* scsi tape extended sense for error class 7 */ /* byte 0 */ u_char adr_val : 1; /* sense data is valid */ u_char : 7; /* fixed at binary 1110000 */ /* byte 1 */ u_char seg_num; /* segment number, applies to copy cmd only */ /* byte 2 */ u_char fil_mk : 1; /* file mark on device */ u_char eom : 1; /* end of media */ u_char ili : 1; /* incorrect length indicator */ u_char : 1; /* reserved */ u_char key : 4; /* sense key, see below */ /* bytes 3 through 6 */ u_char info_0; /* sense information byte 1 */ u_char info_1; /* sense information byte 2 */ u_char info_2; /* sense information byte 3 */ u_char info_3; /* sense information byte 4 */ /* bytes 7 through 13 */ u_char add_len; /* number of additional bytes */ u_char optional_8; /* search/copy src sense only */ u_char optional_9; /* search/copy dst sense only */ u_char optional_10; /* search/copy only */ u_char optional_11; /* search/copy only */ u_char error; /* error code */ u_char error1; /* error code qualifier */ /* bytes 14 through 15 */ u_char optional_14; /* reserved */ u_char optional_15; /* reserved */};#ifdef ST_SYSGEN/* * Sense info returned by sysgen controllers. Note, * this structure should always be 16 bytes or the controller * will not clear it's error condition. Also, you must * always follow an error condition with a request sense cmd. */struct sysgen_sense { /* Bytes 0 - 3 */ u_char disk_sense[4]; /* sense data from disk */ /* byte 4 */ u_char valid4 :1; /* some other bit set in this byte */ u_char no_cart :1; /* no cartrige, or removed */ u_char not_ready :1; /* drive not present */ u_char write_prot :1; /* write protected */ u_char eot :1; /* end of last track */ u_char data_err :1; /* unrecoverable data error */ u_char no_err :1; /* data transmitted not in error */ u_char file_mark :1; /* file mark detected */ /* byte 5 */ u_char valid5 :1; /* some other bit set in this byte */ u_char illegal :1; /* illegal command */ u_char no_data :1; /* unable to find data */ u_char retries :1; /* 8 or more retries needed */ u_char bot :1; /* beginning of tape */ u_char :2; /* reserved */ u_char reset :1; /* power-on or reset since last op */ /* bytes 6 through 9 */ short retry_ct; /* retry count */ short underruns; /* number of underruns */ /* bytes 10 through 15 */ u_char disk_xfer[3]; /* no. blks in last disk operation */ u_char tape_xfer[3]; /* no. blks in last tape operation */};#endif ST_SYSGEN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -