Annotation of Net2/scsi/scsi_all.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * HISTORY
                      3:  * $Log: scsi_all.h,v $
                      4:  * Revision 1.1  1993/03/21 18:12:52  cgd
                      5:  * after 0.2.2 "stable" patches applied
                      6:  *
                      7:  * Revision 1.2  1992/11/20  23:07:13  julian
                      8:  * add a definition for device type T_NODEVICE
                      9:  *
                     10:  * Revision 1.1  1992/09/26  22:14:02  julian
                     11:  * Initial revision
                     12:  *
                     13:  *
                     14:  * PATCHES MAGIC                LEVEL   PATCH THAT GOT US HERE
                     15:  * --------------------         -----   ----------------------
                     16:  * CURRENT PATCH LEVEL:         1       00098
                     17:  * --------------------         -----   ----------------------
                     18:  *
                     19:  * 16 Feb 93   Julian Elischer         ADDED for SCSI system
                     20:  * 
                     21:  */
                     22: 
                     23: /*
                     24:  * SCSI general  interface description
                     25:  */
                     26: 
                     27: 
                     28: /*
                     29:  * Largely written by Julian Elischer ([email protected])
                     30:  * for TRW Financial Systems.
                     31:  *
                     32:  * TRW Financial Systems, in accordance with their agreement with Carnegie
                     33:  * Mellon University, makes this software available to CMU to distribute
                     34:  * or use in any manner that they see fit as long as this message is kept with 
                     35:  * the software. For this reason TFS also grants any other persons or
                     36:  * organisations permission to use or modify this software.
                     37:  *
                     38:  * TFS supplies this software to be publicly redistributed
                     39:  * on the understanding that TFS is not responsible for the correct
                     40:  * functioning of this software in any circumstances.
                     41:  *
                     42:  */
                     43: 
                     44: /*
                     45:  * Ported to run under 386BSD by Julian Elischer ([email protected]) Sept 1992
                     46:  */
                     47: 
                     48: /*
                     49:  * SCSI command format
                     50:  */
                     51: 
                     52: 
                     53: struct scsi_generic
                     54: {
                     55:        u_char  opcode;
                     56:        u_char  bytes[11];
                     57: };
                     58: 
                     59: struct scsi_test_unit_ready
                     60: {
                     61:        u_char  op_code;
                     62:        u_char  :5;
                     63:        u_char  lun:3;
                     64:        u_char  unused[3];
                     65:        u_char  link:1;
                     66:        u_char  flag:4;
                     67:        u_char  :3;
                     68: };
                     69: 
                     70: struct scsi_send_diag
                     71: {
                     72:        u_char  op_code;
                     73:        u_char  uol:1;
                     74:        u_char  dol:1;
                     75:        u_char  selftest:1;
                     76:        u_char  :1;
                     77:        u_char  pf:1;
                     78:        u_char  lun:3;
                     79:        u_char  unused[1];
                     80:        u_char  paramlen[2];
                     81:        u_char  link:1;
                     82:        u_char  flag:4;
                     83:        u_char  :3;
                     84: };
                     85: 
                     86: struct scsi_sense
                     87: {
                     88:        u_char  op_code;
                     89:        u_char  :5;
                     90:        u_char  lun:3;  
                     91:        u_char  unused[2];
                     92:        u_char  length;
                     93:        u_char  link:1;
                     94:        u_char  flag:1;
                     95:        u_char  :6;
                     96: };
                     97: 
                     98: struct scsi_inquiry
                     99: {
                    100:        u_char  op_code;
                    101:        u_char  :5;
                    102:        u_char  lun:3;  
                    103:        u_char  unused[2];
                    104:        u_char  length;
                    105:        u_char  link:1;
                    106:        u_char  flag:1;
                    107:        u_char  :6;
                    108: };
                    109: 
                    110: struct scsi_mode_sense
                    111: {
                    112:        u_char  op_code;
                    113:        u_char  :3;
                    114:        u_char  dbd:1;
                    115:        u_char  rsvd:1;
                    116:        u_char  lun:3;  
                    117:        u_char  page_code:6;
                    118:        u_char  page_ctrl:2;
                    119:        u_char  unused;
                    120:        u_char  length;
                    121:        u_char  link:1;
                    122:        u_char  flag:1;
                    123:        u_char  :6;
                    124: };
                    125: 
                    126: struct scsi_mode_sense_big
                    127: {
                    128:        u_char  op_code;
                    129:        u_char  :3;
                    130:        u_char  dbd:1;
                    131:        u_char  rsvd:1;
                    132:        u_char  lun:3;  
                    133:        u_char  page_code:6;
                    134:        u_char  page_ctrl:2;
                    135:        u_char  unused[4];
                    136:        u_char  length[2];
                    137:        u_char  link:1;
                    138:        u_char  flag:1;
                    139:        u_char  :6;
                    140: };
                    141: 
                    142: struct scsi_mode_select
                    143: {
                    144:        u_char  op_code;
                    145:        u_char  sp:1;
                    146:        u_char  :3;
                    147:        u_char  pf:1;
                    148:        u_char  lun:3;  
                    149:        u_char  unused[2];
                    150:        u_char  length;
                    151:        u_char  link:1;
                    152:        u_char  flag:1;
                    153:        u_char  :6;
                    154: };
                    155: 
                    156: struct scsi_mode_select_big
                    157: {
                    158:        u_char  op_code;
                    159:        u_char  sp:1;
                    160:        u_char  :3;
                    161:        u_char  pf:1;
                    162:        u_char  lun:3;  
                    163:        u_char  unused[5];
                    164:        u_char  length[2];
                    165:        u_char  link:1;
                    166:        u_char  flag:1;
                    167:        u_char  :6;
                    168: };
                    169: 
                    170: struct scsi_reserve
                    171: {
                    172:        u_char  op_code;
                    173:        u_char  :5;
                    174:        u_char  lun:3;  
                    175:        u_char  unused[2];
                    176:        u_char  length;
                    177:        u_char  link:1;
                    178:        u_char  flag:1;
                    179:        u_char  :6;
                    180: };
                    181: 
                    182: struct scsi_release
                    183: {
                    184:        u_char  op_code;
                    185:        u_char  :5;
                    186:        u_char  lun:3;  
                    187:        u_char  unused[2];
                    188:        u_char  length;
                    189:        u_char  link:1;
                    190:        u_char  flag:1;
                    191:        u_char  :6;
                    192: };
                    193: 
                    194: struct scsi_prevent
                    195: {
                    196:        u_char  op_code;
                    197:        u_char  :5;
                    198:        u_char  lun:3;
                    199:        u_char  unused[2];
                    200:        u_char  prevent:1;
                    201:        u_char  :7;
                    202:        u_char  link:1;
                    203:        u_char  flag:1;
                    204:        u_char  :6;
                    205: };
                    206: #define        PR_PREVENT 1
                    207: #define PR_ALLOW   0
                    208: 
                    209: /*
                    210:  * Opcodes
                    211:  */
                    212: 
                    213: #define        TEST_UNIT_READY         0x00
                    214: #define REQUEST_SENSE          0x03
                    215: #define INQUIRY                        0x12
                    216: #define MODE_SELECT            0x15
                    217: #define MODE_SENSE             0x1a
                    218: #define START_STOP             0x1b
                    219: #define RESERVE                0x16
                    220: #define RELEASE                0x17
                    221: #define PREVENT_ALLOW          0x1e
                    222: #define POSITION_TO_ELEMENT    0x2b
                    223: #define        MODE_SENSE_BIG          0x54
                    224: #define        MODE_SELECT_BIG         0x55
                    225: #define MOVE_MEDIUM            0xa5
                    226: #define READ_ELEMENT_STATUS    0xb8
                    227: 
                    228: 
                    229: /*
                    230:  * sense data format
                    231:  */
                    232: #define T_DIRECT       0
                    233: #define T_SEQUENTIAL   1
                    234: #define T_PRINTER      2
                    235: #define T_PROCESSOR    3
                    236: #define T_WORM         4
                    237: #define T_READONLY     5
                    238: #define T_SCANNER      6
                    239: #define T_OPTICAL      7
                    240: #define T_NODEVICE     0x1F
                    241: 
                    242: #define T_CHANGER      8
                    243: #define T_COMM         9
                    244: 
                    245: #define T_REMOV                1
                    246: #define        T_FIXED         0
                    247: 
                    248: struct scsi_inquiry_data
                    249: {
                    250:        u_char  device_type:5;
                    251:        u_char  device_qualifier:3;
                    252:        u_char  dev_qual2:7;
                    253:        u_char  removable:1;
                    254:        u_char  ansii_version:3;
                    255:        u_char  :5;
                    256:        u_char  response_format;
                    257:        u_char  additional_length;
                    258:        u_char  unused[2];
                    259:        u_char  :3;
                    260:        u_char  can_link:1;
                    261:        u_char  can_sync:1;
                    262:        u_char  :3;
                    263:        char    vendor[8];
                    264:        char    product[16];
                    265:        char    revision[4];
                    266:        u_char  extra[8];
                    267: };
                    268: 
                    269: 
                    270: struct scsi_sense_data
                    271: {
                    272:        u_char  error_code:4;
                    273:        u_char  error_class:3;
                    274:        u_char  valid:1;
                    275:        union
                    276:        {
                    277:                struct
                    278:                {
                    279:                        u_char  blockhi:5;
                    280:                        u_char  vendor:3;
                    281:                        u_char  blockmed;
                    282:                        u_char  blocklow;
                    283:                } unextended;
                    284:                struct
                    285:                {
                    286:                        u_char  segment;
                    287:                        u_char  sense_key:4;
                    288:                        u_char  :1;
                    289:                        u_char  ili:1;
                    290:                        u_char  eom:1;
                    291:                        u_char  filemark:1;
                    292:                        u_char  info[4];
                    293:                        u_char  extra_len;
                    294:                        /* allocate enough room to hold new stuff
                    295:                        u_char  cmd_spec_info[4];
                    296:                        u_char  add_sense_code;
                    297:                        u_char  add_sense_code_qual;
                    298:                        u_char  fru;
                    299:                        u_char  sense_key_spec_1:7;
                    300:                        u_char  sksv:1;
                    301:                        u_char  sense_key_spec_2;
                    302:                        u_char  sense_key_spec_3;
                    303:                        ( by increasing 16 to 26 below) */
                    304:                        u_char  extra_bytes[26];
                    305:                } extended;
                    306:        }ext;
                    307: };
                    308: struct scsi_sense_data_new
                    309: {
                    310:        u_char  error_code:7;
                    311:        u_char  valid:1;
                    312:        union
                    313:        {
                    314:                struct
                    315:                {
                    316:                        u_char  blockhi:5;
                    317:                        u_char  vendor:3;
                    318:                        u_char  blockmed;
                    319:                        u_char  blocklow;
                    320:                } unextended;
                    321:                struct
                    322:                {
                    323:                        u_char  segment;
                    324:                        u_char  sense_key:4;
                    325:                        u_char  :1;
                    326:                        u_char  ili:1;
                    327:                        u_char  eom:1;
                    328:                        u_char  filemark:1;
                    329:                        u_char  info[4];
                    330:                        u_char  extra_len;
                    331:                        u_char  cmd_spec_info[4];
                    332:                        u_char  add_sense_code;
                    333:                        u_char  add_sense_code_qual;
                    334:                        u_char  fru;
                    335:                        u_char  sense_key_spec_1:7;
                    336:                        u_char  sksv:1;
                    337:                        u_char  sense_key_spec_2;
                    338:                        u_char  sense_key_spec_3;
                    339:                        u_char  extra_bytes[16];
                    340:                } extended;
                    341:        }ext;
                    342: };
                    343: 
                    344: struct blk_desc
                    345: {
                    346:        u_char  density;
                    347:        u_char  nblocks[3];
                    348:        u_char  reserved;
                    349:        u_char  blklen[3];
                    350: };
                    351: 
                    352: struct scsi_mode_header
                    353: {
                    354:        u_char  data_length;    /* Sense data length */
                    355:        u_char  medium_type;
                    356:        u_char  dev_spec;
                    357:        u_char  blk_desc_len;
                    358: };
                    359: 
                    360: struct scsi_mode_header_big
                    361: {
                    362:        u_char  data_length[2]; /* Sense data length */
                    363:        u_char  medium_type;
                    364:        u_char  dev_spec;
                    365:        u_char  unused[2];
                    366:        u_char  blk_desc_len[2];
                    367: };
                    368: 
                    369: 
                    370: /*
                    371:  * Status Byte
                    372:  */
                    373: #define        SCSI_OK         0x00
                    374: #define        SCSI_CHECK              0x02
                    375: #define        SCSI_BUSY               0x08    
                    376: #define SCSI_INTERM            0x10

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.