|
|
1.1 root 1: /* @(#)streg.h 1.1 86/02/03 SMI */
2:
3: /*
4: * Copyright (c) 1985 by Sun Microsystems, Inc.
5: */
6:
7: /*
8: * Defines for SCSI tape.
9: */
10: #define DEV_BSIZE 512
11: #define SENSE_LENGTH 16
12:
13: /*
14: * Open flag codes
15: */
16: #define CLOSED 0
17: #define OPENING 1
18: #define OPEN_FAILED 2
19: #define OPEN 3
20: #define CLOSING 4
21:
22: /*
23: * Operation codes.
24: */
25: #define SC_REWIND SC_REZERO_UNIT
26: #define SC_WRITE_FILE_MARK 0x10
27: #define SC_SPACE 0x11
28: #define SC_MODE_SELECT 0x15
29: #define SC_ERASE_CARTRIDGE 0x19
30: #define SC_LOAD 0x1b
31: #define SC_SPACE_FILE 0x81 /* phony - for internal use only */
32: #define SC_SPACE_REC 0x82 /* phony - for internal use only */
33:
34: #define ST_TYPE_INVALID 0x00
35:
36: /*
37: * Parameter list for the MODE_SELECT command.
38: * The parameter list contains a header, followed by zero or more
39: * block descriptors, followed by vendor unique parameters, if any.
40: */
41: struct st_ms_hdr {
42: u_char reserved1; /* reserved */
43: u_char reserved2; /* reserved */
44: u_char :1; /* reserved */
45: u_char bufm :3; /* buffered mode */
46: u_char speed :4; /* speed */
47: u_char bd_len; /* length in bytes of all block descs */
48: };
49:
50: struct st_ms_bd {
51: u_char density; /* density code */
52: u_char high_nb; /* num of logical blocks on the medium that */
53: u_char mid_nb; /* are to be formatted with the density code */
54: u_char low_nb; /* and block length in block desc */
55: u_char reserved; /* reserved */
56: u_char high_bl; /* block length */
57: u_char mid_bl; /* block length */
58: u_char low_bl; /* block length */
59: };
60:
61: /*
62: * Mode Select Parameter List expected by emulex controllers.
63: */
64: struct st_emulex_mspl {
65: struct st_ms_hdr hdr; /* mode select header */
66: struct st_ms_bd bd; /* block descriptor */
67: u_char :5; /* unused */
68: u_char dea :1; /* disable erase ahead */
69: u_char aui :1; /* auto-load inhibit */
70: u_char sec :1; /* soft error count */
71: };
72: #define EM_MS_PL_LEN 13 /* length of mode select param list */
73: #define EM_MS_BD_LEN 8 /* length of block descriptors */
74:
75: /*
76: * Sense info returned by Archive controllers.
77: */
78: struct st_archive_sense {
79: struct scsi_ext_sense ext_sense; /* generic extended sense format */
80: /* u_char rserved[4];
81: u_char retries_msb; /* retry count, most signif byte */
82: /* u_char retries_lsb; /* retry count, most signif byte */
83: };
84:
85: /* number of emulex sense bytes in addition to generic extended sense */
86: #define AR_ES_ADD_LEN 0
87:
88: /*
89: * Macros for getting information from the sense data returned
90: * by the tape controller.
91: */
92: #define ST_FILE_MARK(dsi, sense) \
93: (((struct scsi_ext_sense *)sense)->fil_mk)
94:
95: #define ST_WRITE_PROT(dsi, sense) \
96: (((struct scsi_ext_sense *)sense)->key == SC_DATA_PROTECT)
97:
98: #define ST_EOT(dsi, sense) \
99: (((struct scsi_ext_sense *)sense)->eom)
100:
101: #define ST_ILLEGAL(dsi, sense) \
102: (((struct scsi_ext_sense *)sense)->key == SC_ILLEGAL_REQUEST)
103:
104: #define ST_NO_CART(dsi, sense) \
105: (((struct scsi_ext_sense *)sense)->key == SC_NOT_READY)
106:
107: #define ST_RESET(dsi, sense) \
108: (((struct scsi_ext_sense *)sense)->key == SC_UNIT_ATTENTION)
109:
110: #define ST_CORRECTABLE(dsi, sense) \
111: (((struct scsi_ext_sense *)sense)->key == SC_RECOVERABLE_ERROR)
112:
113: #define ST_EOD(dsi, sense) \
114: (((struct scsi_ext_sense *)sense)->key == SC_BLANK_CHECK)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.