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

1.1       root        1: /*
                      2:  * HISTORY
                      3:  * $Log: scsi_disk.h,v $
                      4:  * Revision 1.1  1993/03/21 18:13:00  cgd
                      5:  * after 0.2.2 "stable" patches applied
                      6:  *
                      7:  * Revision 1.2  1992/10/13  03:14:21  julian
                      8:  * added the load-eject field in 'start/stop' for removable devices.
                      9:  *
                     10:  * Revision 1.1  1992/09/26  22:11:29  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 interface description
                     25:  */
                     26: 
                     27: /*
                     28:  * Some lines of this file comes from a file of the name "scsi.h"
                     29:  * distributed by OSF as part of mach2.5,
                     30:  *  so the following disclaimer has been kept.
                     31:  *
                     32:  * Copyright 1990 by Open Software Foundation,
                     33:  * Grenoble, FRANCE
                     34:  *
                     35:  *             All Rights Reserved
                     36:  * 
                     37:  *   Permission to use, copy, modify, and distribute this software and
                     38:  * its documentation for any purpose and without fee is hereby granted,
                     39:  * provided that the above copyright notice appears in all copies and
                     40:  * that both the copyright notice and this permission notice appear in
                     41:  * supporting documentation, and that the name of OSF or Open Software
                     42:  * Foundation not be used in advertising or publicity pertaining to
                     43:  * distribution of the software without specific, written prior
                     44:  * permission.
                     45:  * 
                     46:  *   OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
                     47:  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
                     48:  * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
                     49:  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
                     50:  * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
                     51:  * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
                     52:  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     53:  */
                     54: 
                     55: /*
                     56:  * Largely written by Julian Elischer ([email protected])
                     57:  * for TRW Financial Systems.
                     58:  *
                     59:  * TRW Financial Systems, in accordance with their agreement with Carnegie
                     60:  * Mellon University, makes this software available to CMU to distribute
                     61:  * or use in any manner that they see fit as long as this message is kept with 
                     62:  * the software. For this reason TFS also grants any other persons or
                     63:  * organisations permission to use or modify this software.
                     64:  *
                     65:  * TFS supplies this software to be publicly redistributed
                     66:  * on the understanding that TFS is not responsible for the correct
                     67:  * functioning of this software in any circumstances.
                     68:  *
                     69:  */
                     70: 
                     71: /*
                     72:  * Ported to run under 386BSD by Julian Elischer ([email protected]) Sept 1992
                     73:  */
                     74: 
                     75: /*
                     76:  * SCSI command format
                     77:  */
                     78: 
                     79: 
                     80: struct scsi_reassign_blocks
                     81: {
                     82:        u_char  op_code;
                     83:        u_char  :5;
                     84:        u_char  lun:3;  
                     85:        u_char  unused[3];
                     86:        u_char  link:1;
                     87:        u_char  flag:1;
                     88:        u_char  :6;
                     89: };
                     90: 
                     91: struct scsi_rw
                     92: {
                     93:        u_char  op_code;
                     94:        u_char  addr_2:5;       /* Most significant */
                     95:        u_char  lun:3;
                     96:        u_char  addr_1;
                     97:        u_char  addr_0;         /* least significant */
                     98:        u_char  length;
                     99:        u_char  link:1;
                    100:        u_char  flag:1;
                    101:        u_char  :6;
                    102: };
                    103: 
                    104: struct scsi_rw_big
                    105: {
                    106:        u_char  op_code;
                    107:        u_char  rel_addr:1;
                    108:        u_char  :4;     /* Most significant */
                    109:        u_char  lun:3;
                    110:        u_char  addr_3;
                    111:        u_char  addr_2;
                    112:        u_char  addr_1;
                    113:        u_char  addr_0;         /* least significant */
                    114:        u_char  reserved;;
                    115:        u_char  length2;
                    116:        u_char  length1;
                    117:        u_char  link:1;
                    118:        u_char  flag:1;
                    119:        u_char  :4;
                    120:        u_char  vendor:2;
                    121: };
                    122: 
                    123: struct scsi_read_capacity
                    124: {
                    125:        u_char  op_code;
                    126:        u_char  :5;
                    127:        u_char  lun:3;
                    128:        u_char  addr_3; /* Most Significant */
                    129:        u_char  addr_2;
                    130:        u_char  addr_1;
                    131:        u_char  addr_0; /* Least Significant */
                    132:        u_char  unused[3];
                    133:        u_char  link:1;
                    134:        u_char  flag:1;
                    135:        u_char  :6;     
                    136: };
                    137: 
                    138: struct scsi_start_stop
                    139: {
                    140:        u_char  op_code;
                    141:        u_char  :5;
                    142:        u_char  lun:3;
                    143:        u_char  unused[2];
                    144:        u_char  start:1;
                    145:        u_char  loej:1;
                    146:        u_char  :6;
                    147:        u_char  link:1;
                    148:        u_char  flag:1;
                    149:        u_char  :6;
                    150: };
                    151: 
                    152: 
                    153: 
                    154: /*
                    155:  * Opcodes
                    156:  */
                    157: 
                    158: #define        REASSIGN_BLOCKS         0x07
                    159: #define        READ_COMMAND            0x08
                    160: #define WRITE_COMMAND          0x0a
                    161: #define MODE_SELECT            0x15
                    162: #define MODE_SENSE             0x1a
                    163: #define START_STOP             0x1b
                    164: #define PREVENT_ALLOW          0x1e
                    165: #define        READ_CAPACITY           0x25
                    166: #define        READ_BIG                0x28
                    167: #define WRITE_BIG              0x2a
                    168: 
                    169: 
                    170: 
                    171: struct scsi_read_cap_data
                    172: {
                    173:        u_char  addr_3; /* Most significant */
                    174:        u_char  addr_2;
                    175:        u_char  addr_1;
                    176:        u_char  addr_0; /* Least significant */
                    177:        u_char  length_3;       /* Most significant */
                    178:        u_char  length_2;
                    179:        u_char  length_1;
                    180:        u_char  length_0;       /* Least significant */
                    181: };
                    182: 
                    183: struct scsi_reassign_blocks_data
                    184: {
                    185:        u_char  reserved[2];
                    186:        u_char  length_msb;
                    187:        u_char  length_lsb;
                    188:        struct
                    189:        {
                    190:                u_char  dlbaddr_3;      /* defect logical block address (MSB) */
                    191:                u_char  dlbaddr_2;
                    192:                u_char  dlbaddr_1;
                    193:                u_char  dlbaddr_0;      /* defect logical block address (LSB) */
                    194:        } defect_descriptor[1];
                    195: };
                    196: 
                    197: union  disk_pages /* this is the structure copied from osf */
                    198: {
                    199:        struct page_disk_format {
                    200:           u_char pg_code:6;    /* page code (should be 3)            */
                    201:           u_char :2;           
                    202:           u_char pg_length;    /* page length (should be 0x16)       */
                    203:           u_char trk_z_1;      /* tracks per zone (MSB)              */
                    204:           u_char trk_z_0;      /* tracks per zone (LSB)              */
                    205:           u_char alt_sec_1;    /* alternate sectors per zone (MSB)   */
                    206:           u_char alt_sec_0;    /* alternate sectors per zone (LSB)   */
                    207:           u_char alt_trk_z_1;  /* alternate tracks per zone (MSB)    */
                    208:           u_char alt_trk_z_0;  /* alternate tracks per zone (LSB)    */
                    209:           u_char alt_trk_v_1;  /* alternate tracks per volume (MSB)  */
                    210:           u_char alt_trk_v_0;  /* alternate tracks per volume (LSB)  */
                    211:           u_char ph_sec_t_1;   /* physical sectors per track (MSB)   */
                    212:           u_char ph_sec_t_0;   /* physical sectors per track (LSB)   */
                    213:           u_char bytes_s_1;    /* bytes per sector (MSB)             */
                    214:           u_char bytes_s_0;    /* bytes per sector (LSB)             */
                    215:           u_char interleave_1;/* interleave (MSB)                    */
                    216:           u_char interleave_0;/* interleave (LSB)                    */
                    217:           u_char trk_skew_1;   /* track skew factor (MSB)            */
                    218:           u_char trk_skew_0;   /* track skew factor (LSB)            */
                    219:           u_char cyl_skew_1;   /* cylinder skew (MSB)                */
                    220:           u_char cyl_skew_0;   /* cylinder skew (LSB)                */
                    221:           u_char reserved1:4;
                    222:           u_char surf:1;
                    223:           u_char rmb:1;
                    224:           u_char hsec:1;
                    225:           u_char ssec:1;
                    226:           u_char reserved2;
                    227:           u_char reserved3;
                    228:        } disk_format;
                    229:        struct page_rigid_geometry {
                    230:           u_char pg_code:7;    /* page code (should be 4)            */
                    231:           u_char mbone:1;      /* must be one                        */
                    232:           u_char pg_length;    /* page length (should be 0x16)       */
                    233:           u_char ncyl_2;       /* number of cylinders (MSB)          */
                    234:           u_char ncyl_1;       /* number of cylinders                */
                    235:           u_char ncyl_0;       /* number of cylinders (LSB)          */
                    236:           u_char nheads;       /* number of heads                    */
                    237:           u_char st_cyl_wp_2;  /* starting cyl., write precomp (MSB) */
                    238:           u_char st_cyl_wp_1;  /* starting cyl., write precomp       */
                    239:           u_char st_cyl_wp_0;  /* starting cyl., write precomp (LSB) */
                    240:           u_char st_cyl_rwc_2;/* starting cyl., red. write cur (MSB)*/
                    241:           u_char st_cyl_rwc_1;/* starting cyl., red. write cur      */
                    242:           u_char st_cyl_rwc_0;/* starting cyl., red. write cur (LSB)*/
                    243:           u_char driv_step_1;  /* drive step rate (MSB)              */
                    244:           u_char driv_step_0;  /* drive step rate (LSB)              */
                    245:           u_char land_zone_2;  /* landing zone cylinder (MSB)        */
                    246:           u_char land_zone_1;  /* landing zone cylinder              */
                    247:           u_char land_zone_0;  /* landing zone cylinder (LSB)        */
                    248:           u_char reserved1;
                    249:           u_char reserved2;
                    250:           u_char reserved3;
                    251:        } rigid_geometry;
                    252: } ;

unix.superglobalmegacorp.com

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