Annotation of 43BSD/sys/vax/mscp.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1982, 1986 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)mscp.h      7.1 (Berkeley) 6/5/86
                      7:  */
                      8: 
                      9: /*
                     10:  * Definitions for the Mass Storage Control Protocol
                     11:  */
                     12: 
                     13: 
                     14: /*
                     15:  * Control message opcodes
                     16:  */
                     17: #define        M_OP_ABORT      0001    /* Abort command */
                     18: #define        M_OP_GTCMD      0002    /* Get command status command */
                     19: #define        M_OP_GTUNT      0003    /* Get unit status command */
                     20: #define        M_OP_STCON      0004    /* Set controller characteristics command */
                     21: #define        M_OP_SEREX      0007    /* Serious exception end message */
                     22: #define        M_OP_AVAIL      0010    /* Available command */
                     23: #define        M_OP_ONLIN      0011    /* Online command */
                     24: #define        M_OP_STUNT      0012    /* Set unit characteristics command */
                     25: #define        M_OP_DTACP      0013    /* Determine access paths command */
                     26: #define        M_OP_ACCES      0020    /* Access command */
                     27: #define        M_OP_CMPCD      0021    /* Compare controller data command */
                     28: #define        M_OP_ERASE      0022    /* Erase command */
                     29: #define        M_OP_FLUSH      0023    /* Flush command */
                     30: #define        M_OP_REPLC      0024    /* Replace command */
                     31: #define        M_OP_COMP       0040    /* Compare host data command */
                     32: #define        M_OP_READ       0041    /* Read command */
                     33: #define        M_OP_WRITE      0042    /* Write command */
                     34: #define        M_OP_AVATN      0100    /* Available attention message */
                     35: #define        M_OP_DUPUN      0101    /* Duplicate unit number attention message */
                     36: #define        M_OP_ACPTH      0102    /* Access path attention message */
                     37: #define        M_OP_END        0200    /* End message flag */
                     38: 
                     39: 
                     40: /*
                     41:  * Generic command modifiers
                     42:  */
                     43: #define        M_MD_EXPRS      0100000         /* Express request */
                     44: #define        M_MD_COMP       0040000         /* Compare */
                     45: #define        M_MD_CLSEX      0020000         /* Clear serious exception */
                     46: #define        M_MD_ERROR      0010000         /* Force error */
                     47: #define        M_MD_SCCHH      0004000         /* Suppress caching (high speed) */
                     48: #define        M_MD_SCCHL      0002000         /* Suppress caching (low speed) */
                     49: #define        M_MD_SECOR      0001000         /* Suppress error correction */
                     50: #define        M_MD_SEREC      0000400         /* Suppress error recovery */
                     51: #define        M_MD_SSHDW      0000200         /* Suppress shadowing */
                     52: #define        M_MD_WBKNV      0000100         /* Write back (non-volatile) */
                     53: #define        M_MD_WBKVL      0000040         /* Write back (volatile) */
                     54: #define        M_MD_WRSEQ      0000020         /* Write shadow set one unit at a time */
                     55: 
                     56: /*
                     57:  * AVAILABLE command modifiers
                     58:  */
                     59: #define        M_MD_ALLCD      0000002         /* All class drivers */
                     60: #define        M_MD_SPNDW      0000001         /* Spin down */
                     61: 
                     62: /*
                     63:  * FLUSH command modifiers
                     64:  */
                     65: #define        M_MD_FLENU      0000001         /* Flush entire unit */
                     66: #define        M_MD_VOLTL      0000002         /* Volatile only */
                     67: 
                     68: /*
                     69:  * GET UNIT STATUS command modifiers
                     70:  */
                     71: #define        M_MD_NXUNT      0000001         /* Next unit */
                     72: 
                     73: /*
                     74:  * ONLINE command modifiers
                     75:  */
                     76: #define        M_MD_RIP        0000001         /* Allow self destruction */
                     77: #define        M_MD_IGNMF      0000002         /* Ignore media format error */
                     78: 
                     79: /*
                     80:  * ONLINE and SET UNIT CHARACTERISTICS command modifiers
                     81:  */
                     82: #define        M_MD_ALTHI      0000040         /* Alter host identifier */
                     83: #define        M_MD_SHDSP      0000020         /* Shadow unit specified */
                     84: #define        M_MD_CLWBL      0000010         /* Clear write-back data lost */
                     85: #define        M_MD_STWRP      0000004         /* Set write protect */
                     86: 
                     87: /*
                     88:  * REPLACE command modifiers
                     89:  */
                     90: #define        M_MD_PRIMR      0000001         /* Primary replacement block */
                     91: 
                     92: 
                     93: /*
                     94:  * End message flags
                     95:  */
                     96: #define        M_EF_BBLKR      0200    /* Bad block reported */
                     97: #define        M_EF_BBLKU      0100    /* Bad block unreported */
                     98: #define        M_EF_ERLOG      0040    /* Error log generated */
                     99: #define        M_EF_SEREX      0020    /* Serious exception */
                    100: 
                    101: 
                    102: /*
                    103:  * Controller flags
                    104:  */
                    105: #define        M_CF_ATTN       0200    /* Enable attention messages */
                    106: #define        M_CF_MISC       0100    /* Enable miscellaneous error log messages */
                    107: #define        M_CF_OTHER      0040    /* Enable other host's error log messages */
                    108: #define        M_CF_THIS       0020    /* Enable this host's error log messages */
                    109: #define        M_CF_MLTHS      0004    /* Multi-host */
                    110: #define        M_CF_SHADW      0002    /* Shadowing */
                    111: #define        M_CF_576        0001    /* 576 byte sectors */
                    112: 
                    113: 
                    114: /*
                    115:  * Unit flags
                    116:  */
                    117: #define        M_UF_REPLC      0100000         /* Controller initiated bad block replacement */
                    118: #define        M_UF_INACT      0040000         /* Inactive shadow set unit */
                    119: #define        M_UF_WRTPH      0020000         /* Write protect (hardware) */
                    120: #define        M_UF_WRTPS      0010000         /* Write protect (software or volume) */
                    121: #define        M_UF_SCCHH      0004000         /* Suppress caching (high speed) */
                    122: #define        M_UF_SCCHL      0002000         /* Suppress caching (low speed) */
                    123: #define        M_UF_RMVBL      0000200         /* Removable media */
                    124: #define        M_UF_WBKNV      0000100         /* Write back (non-volatile) */
                    125: #define        M_UF_576        0000004         /* 576 byte sectors */
                    126: #define        M_UF_CMPWR      0000002         /* Compare writes */
                    127: #define        M_UF_CMPRD      0000001         /* Compare reads */
                    128: 
                    129: 
                    130: /*
                    131:  * Status codes
                    132:  */
                    133: #define        M_ST_MASK       037             /* Status code mask */
                    134: #define        M_ST_SUCC       000             /* Success */
                    135: #define        M_ST_ICMD       001             /* Invalid command */
                    136: #define        M_ST_ABRTD      002             /* Command aborted */
                    137: #define        M_ST_OFFLN      003             /* Unit offline */
                    138: #define        M_ST_AVLBL      004             /* Unit available */
                    139: #define        M_ST_MFMTE      005             /* Media format error */
                    140: #define        M_ST_WRTPR      006             /* Write protected */
                    141: #define        M_ST_COMP       007             /* Compare error */
                    142: #define        M_ST_DATA       010             /* Data error */
                    143: #define        M_ST_HSTBF      011             /* Host buffer access error */
                    144: #define        M_ST_CNTLR      012             /* Controller error */
                    145: #define        M_ST_DRIVE      013             /* Drive error */
                    146: #define        M_ST_DIAG       037             /* Message from an internal diagnostic */
                    147: 
                    148: /*
                    149:  * An MSCP packet
                    150:  */
                    151: 
                    152: struct mscp {
                    153:        struct  mscp_header mscp_header;/* device specific header */
                    154:        long    mscp_cmdref;            /* command reference number */
                    155:        short   mscp_unit;              /* unit number */
                    156:        short   mscp_xxx1;              /* unused */
                    157:        u_char  mscp_opcode;            /* opcode */
                    158:        u_char  mscp_flags;             /* end message flags */
                    159:        short   mscp_modifier;          /* modifiers */
                    160:        union {
                    161:        struct {
                    162:                long    Mscp_bytecnt;   /* byte count */
                    163:                long    Mscp_buffer;    /* buffer descriptor */
                    164:                long    Mscp_xxx2[2];   /* unused */
                    165:                long    Mscp_lbn;       /* logical block number */
                    166:                long    Mscp_xxx4;      /* unused */
                    167:                long    *Mscp_dscptr;   /* pointer to descriptor (software) */
                    168:                long    Mscp_sftwds[4]; /* software words, padding */
                    169:        } mscp_generic;
                    170:        struct {
                    171:                short   Mscp_version;   /* MSCP version */
                    172:                short   Mscp_cntflgs;   /* controller flags */
                    173:                short   Mscp_hsttmo;    /* host timeout */
                    174:                short   Mscp_usefrac;   /* use fraction */
                    175:                long    Mscp_time;      /* time and date */
                    176:        } mscp_setcntchar;
                    177:        struct {
                    178:                short   Mscp_multunt;   /* multi-unit code */
                    179:                short   Mscp_unitflgs;  /* unit flags */
                    180:                long    Mscp_hostid;    /* host identifier */
                    181:                quad    Mscp_unitid;    /* unit identifier */
                    182:                long    Mscp_mediaid;   /* media type identifier */
                    183:                short   Mscp_shdwunt;   /* shadow unit */
                    184:                short   Mscp_shdwsts;   /* shadow status */
                    185:                short   Mscp_track;     /* track size */
                    186:                short   Mscp_group;     /* group size */
                    187:                short   Mscp_cylinder;  /* cylinder size */
                    188:                short   Mscp_xxx3;      /* reserved */
                    189:                short   Mscp_rctsize;   /* RCT table size */
                    190:                char    Mscp_rbns;      /* RBNs / track */
                    191:                char    Mscp_rctcpys;   /* RCT copies */
                    192:        } mscp_getunitsts;
                    193:        } mscp_un;
                    194:        short mscp_fil1;
                    195:        short mscp_fil2;
                    196:        short mscp_fil3;
                    197: };
                    198: 
                    199: #define mscp_msglen (sizeof (struct mscp) - sizeof(struct mscp_header))
                    200: 
                    201: /*
                    202:  * generic packet
                    203:  */
                    204: 
                    205: #define        mscp_bytecnt    mscp_un.mscp_generic.Mscp_bytecnt
                    206: #define        mscp_buffer     mscp_un.mscp_generic.Mscp_buffer
                    207: #define        mscp_lbn        mscp_un.mscp_generic.Mscp_lbn
                    208: #define        mscp_dscptr     mscp_un.mscp_generic.Mscp_dscptr
                    209: #define        mscp_sftwds     mscp_un.mscp_generic.Mscp_sftwds
                    210: #define        mscp_status     mscp_modifier
                    211: 
                    212: /*
                    213:  * Abort / Get Command Status packet
                    214:  */
                    215: 
                    216: #define        mscp_outref     mscp_bytecnt
                    217: 
                    218: /*
                    219:  * Online / Set Unit Characteristics packet
                    220:  */
                    221: 
                    222: #define        mscp_errlgfl    mscp_lbn
                    223: #define        mscp_copyspd    mscp_shdwsts
                    224: 
                    225: /*
                    226:  * Replace packet
                    227:  */
                    228: 
                    229: #define        mscp_rbn        mscp_bytecnt
                    230: 
                    231: /*
                    232:  * Set Controller Characteristics packet
                    233:  */
                    234: 
                    235: #define        mscp_version    mscp_un.mscp_setcntchar.Mscp_version
                    236: #define        mscp_cntflgs    mscp_un.mscp_setcntchar.Mscp_cntflgs
                    237: #define        mscp_hsttmo     mscp_un.mscp_setcntchar.Mscp_hsttmo
                    238: #define        mscp_usefrac    mscp_un.mscp_setcntchar.Mscp_usefrac
                    239: #define        mscp_time       mscp_un.mscp_setcntchar.Mscp_time
                    240: 
                    241: /*
                    242:  * Get Unit Status end packet
                    243:  */
                    244: 
                    245: #define        mscp_multunt    mscp_un.mscp_getunitsts.Mscp_multunt
                    246: #define        mscp_unitflgs   mscp_un.mscp_getunitsts.Mscp_unitflgs
                    247: #define        mscp_hostid     mscp_un.mscp_getunitsts.Mscp_hostid
                    248: #define        mscp_unitid     mscp_un.mscp_getunitsts.Mscp_unitid
                    249: #define        mscp_mediaid    mscp_un.mscp_getunitsts.Mscp_mediaid
                    250: #define        mscp_shdwunt    mscp_un.mscp_getunitsts.Mscp_shdwunt
                    251: #define        mscp_shdwsts    mscp_un.mscp_getunitsts.Mscp_shdwsts
                    252: #define        mscp_track      mscp_un.mscp_getunitsts.Mscp_track
                    253: #define        mscp_group      mscp_un.mscp_getunitsts.Mscp_group
                    254: #define        mscp_cylinder   mscp_un.mscp_getunitsts.Mscp_cylinder
                    255: #define        mscp_rctsize    mscp_un.mscp_getunitsts.Mscp_rctsize
                    256: #define        mscp_rbns       mscp_un.mscp_getunitsts.Mscp_rbns
                    257: #define        mscp_rctcpys    mscp_un.mscp_getunitsts.Mscp_rctcpys
                    258: 
                    259: /*
                    260:  * Online / Set Unit Characteristics end packet
                    261:  */
                    262: 
                    263: #define        mscp_untsize    mscp_dscptr
                    264: #define        mscp_volser     mscp_sftwds[0]
                    265: 
                    266: /*
                    267:  * Set Controller Characteristics end packet
                    268:  */
                    269: 
                    270: #define        mscp_cnttmo     mscp_hsttmo
                    271: #define        mscp_cntcmdl    mscp_usefrac
                    272: #define        mscp_cntid      mscp_unitid
                    273: 
                    274: 
                    275: /*
                    276:  * Error Log message format codes
                    277:  */
                    278: #define        M_FM_CNTERR     0       /* Controller error */
                    279: #define        M_FM_BUSADDR    1       /* Host memory access error */
                    280: #define        M_FM_DISKTRN    2       /* Disk transfer error */
                    281: #define        M_FM_SDI        3       /* SDI error */
                    282: #define        M_FM_SMLDSK     4       /* Small disk error */
                    283: 
                    284: /*
                    285:  * Error Log message flags
                    286:  */
                    287: #define        M_LF_SUCC       0200    /* Operation successful */
                    288: #define        M_LF_CONT       0100    /* Operation continuing */
                    289: #define        M_LF_SQNRS      0001    /* Sequence number reset */
                    290: 
                    291: /*
                    292:  * MSCP Error Log packet
                    293:  *
                    294:  *     NOTE: MSCP packet must be padded to this size.
                    295:  */
                    296: 
                    297: struct mslg {
                    298:        struct  mscp_header mslg_header;/* device specific header */
                    299:        long    mslg_cmdref;            /* command reference number */
                    300:        short   mslg_unit;              /* unit number */
                    301:        short   mslg_seqnum;            /* sequence number */
                    302:        u_char  mslg_format;            /* format */
                    303:        u_char  mslg_flags;             /* error log message flags */
                    304:        short   mslg_event;             /* event code */
                    305:        quad    mslg_cntid;             /* controller id */
                    306:        u_char  mslg_cntsvr;            /* controller software version */
                    307:        u_char  mslg_cnthvr;            /* controller hardware version */
                    308:        short   mslg_multunt;           /* multi-unit code */
                    309:        quad    mslg_unitid;            /* unit id */
                    310:        u_char  mslg_unitsvr;           /* unit software version */
                    311:        u_char  mslg_unithvr;           /* unit hardware version */
                    312:        short   mslg_group;             /* group; retry + level */
                    313:        long    mslg_volser;            /* volume serial number */
                    314:        long    mslg_hdr;               /* header */
                    315:        char    mslg_sdistat[12];       /* SDI status information */
                    316: };
                    317: 
                    318: #define        mslg_busaddr    mslg_unitid.val[0]
                    319: #define        mslg_sdecyl     mslg_group
                    320: 

unix.superglobalmegacorp.com

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