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

1.1       root        1: /*     @(#)tmscp.h     7.1 (Berkeley) 6/5/86 */
                      2: 
                      3: /*
                      4:  *     @(#)tmscp.h     1.3     10/21/85
                      5:  * Definitions for the Tape Mass Storage Control Protocol
                      6:  */
                      7: 
                      8: /****************************************************************
                      9:  *                                                              *
                     10:  *        Licensed from Digital Equipment Corporation           *
                     11:  *                       Copyright (c)                          *
                     12:  *               Digital Equipment Corporation                  *
                     13:  *                   Maynard, Massachusetts                     *
                     14:  *                         1985, 1986                           *
                     15:  *                    All rights reserved.                      *
                     16:  *                                                              *
                     17:  *        The Information in this software is subject to change *
                     18:  *   without notice and should not be construed as a commitment *
                     19:  *   by  Digital  Equipment  Corporation.   Digital   makes  no *
                     20:  *   representations about the suitability of this software for *
                     21:  *   any purpose.  It is supplied "As Is" without expressed  or *
                     22:  *   implied  warranty.                                        *
                     23:  *                                                             *
                     24:  *        If the Regents of the University of California or its *
                     25:  *   licensees modify the software in a manner creating        *
                     26:  *   diriviative copyright rights, appropriate copyright       *
                     27:  *   legends may be placed on  the drivative work in addition   *
                     28:  *   to that set forth above.                                  *
                     29:  *                                                             *
                     30:  ****************************************************************
                     31:  *
                     32:  * Modification history: /sys/vax/tmscp.h
                     33:  *
                     34:  * 18-Oct-85 - afd
                     35:  *     Added: defines for tape format (density) flag values.
                     36:  *
                     37:  * 18-Jul-85 - afd
                     38:  *     Added: #define  M_UF_WBKNV      0000100
                     39:  *             for write back (which enables cache).
                     40:  ************************************************************************/
                     41:  
                     42:  
                     43: /*
                     44:  * Control message opcodes
                     45:  */
                     46: #define        M_OP_ABORT      0001    /* Abort command */
                     47: #define        M_OP_GTCMD      0002    /* Get command status command */
                     48: #define        M_OP_GTUNT      0003    /* Get unit status command */
                     49: #define        M_OP_STCON      0004    /* Set controller characteristics command */
                     50: #define        M_OP_AVAIL      0010    /* Available command */
                     51: #define        M_OP_ONLIN      0011    /* Online command */
                     52: #define        M_OP_STUNT      0012    /* Set unit characteristics command */
                     53: #define        M_OP_DTACP      0013    /* Determine access paths command */
                     54: #define        M_OP_ACCES      0020    /* Access command */
                     55: #define        M_OP_CMPCD      0021    /* Compare controller data command */
                     56: #define        M_OP_ERASE      0022    /* Erase command */
                     57: #define        M_OP_FLUSH      0023    /* Flush command */
                     58: #define M_OP_ERGAP     0026    /* Erase gap command */
                     59: #define        M_OP_COMP       0040    /* Compare host data command */
                     60: #define        M_OP_READ       0041    /* Read command */
                     61: #define        M_OP_WRITE      0042    /* Write command */
                     62: #define        M_OP_WRITM      0044    /* Write tape mark command */
                     63: #define        M_OP_REPOS      0045    /* Reposition command */
                     64: #define        M_OP_AVATN      0100    /* Available attention message */
                     65: #define        M_OP_DUPUN      0101    /* Duplicate unit number attention message */
                     66: #define        M_OP_ACPTH      0102    /* Access path attention message */
                     67: #define        M_OP_END        0200    /* End message flag */
                     68:  
                     69:  
                     70: /*
                     71:  * Generic command modifiers
                     72:  */
                     73: #define        M_MD_COMP       0040000         /* Compare */
                     74: #define        M_MD_CLSEX      0020000         /* Clear serious exception */
                     75: #define        M_MD_SECOR      0001000         /* Suppress error correction */
                     76: #define        M_MD_SEREC      0000400         /* Suppress error recovery */
                     77: #define        M_MD_STWRP      0000004         /* Set write protect */
                     78: #define        M_MD_ALLCD      0000002         /* All class drivers */
                     79: #define        M_MD_NXUNT      0000001         /* Next unit */
                     80:  
                     81: /*
                     82:  * TMSCP command modifiers
                     83:  */
                     84: #define        M_MD_DLEOT      0000200         /* Delete LEOT */
                     85: #define        M_MD_IMMED      0000100         /* Immediate completion */
                     86: #define        M_MD_EXCAC      0000040         /* Exclusive access */
                     87: #define        M_MD_UNLOD      0000020         /* Unload */
                     88: #define        M_MD_REVRS      0000010         /* reverse */
                     89: #define        M_MD_OBJCT      0000004         /* object count */
                     90: #define        M_MD_REWND      0000002         /* rewind */
                     91:  
                     92: /*
                     93:  * End message flags
                     94:  */
                     95: #define        M_EF_ERLOG      0040    /* Error log generated */
                     96: #define        M_EF_SEREX      0020    /* Serious exception */
                     97: #define        M_EF_EOT        0010    /* End of tape encountered */
                     98: #define        M_EF_PLS        0004    /* Position lost */
                     99:  
                    100:  
                    101: /*
                    102:  * Controller flags
                    103:  */
                    104: #define        M_CF_ATTN       0200    /* Enable attention messages */
                    105: #define        M_CF_MISC       0100    /* Enable miscellaneous error log messages */
                    106: #define        M_CF_OTHER      0040    /* Enable other host's error log messages */
                    107: #define        M_CF_THIS       0020    /* Enable this host's error log messages */
                    108:  
                    109:  
                    110: /*
                    111:  * Unit flags
                    112:  */
                    113: #define        M_UF_WRTPH      0020000         /* Write protect (hardware) */
                    114: #define        M_UF_WRTPS      0010000         /* Write protect (software or volume) */
                    115: #define        M_UF_WBKNV      0000100         /* Write back (enables cache) */
                    116: #define        M_UF_VSMSU      0000040         /* Variable speed mode suppression */
                    117: #define        M_UF_VARSP      0000020         /* Variable speed unit */
                    118: #define        M_UF_CMPWR      0000002         /* Compare writes */
                    119: #define        M_UF_CMPRD      0000001         /* Compare reads */
                    120:  
                    121:  
                    122: /*
                    123:  * Status codes
                    124:  */
                    125: #define        M_ST_MASK       037             /* Status code mask */
                    126: #define        M_ST_SUCC       000             /* Success */
                    127: #define        M_ST_ICMD       001             /* Invalid command */
                    128: #define        M_ST_ABRTD      002             /* Command aborted */
                    129: #define        M_ST_OFFLN      003             /* Unit offline */
                    130: #define        M_ST_AVLBL      004             /* Unit available */
                    131: #define        M_ST_WRTPR      006             /* Write protected */
                    132: #define        M_ST_COMP       007             /* Compare error */
                    133: #define        M_ST_DATA       010             /* Data error */
                    134: #define        M_ST_HSTBF      011             /* Host buffer access error */
                    135: #define        M_ST_CNTLR      012             /* Controller error */
                    136: #define        M_ST_DRIVE      013             /* Drive error */
                    137: #define        M_ST_FMTER      014             /* Formatter error */
                    138: #define        M_ST_BOT        015             /* BOT encountered */
                    139: #define        M_ST_TAPEM      016             /* Tape mark encountered */
                    140: #define        M_ST_RDTRN      020             /* Record data truncated */
                    141: #define        M_ST_PLOST      021             /* Position lost */
                    142: #define        M_ST_SEX        022             /* Serious exception */
                    143: #define        M_ST_LED        023             /* LEOT detected */
                    144: #define        M_ST_DIAG       037             /* Message from an internal diagnostic */
                    145:  
                    146: /*
                    147:  * An MSCP packet
                    148:  */
                    149:  
                    150: struct mscp {
                    151:        struct  mscp_header mscp_header;/* device specific header */
                    152:        long    mscp_cmdref;            /* command reference number */
                    153:        short   mscp_unit;              /* unit number */
                    154:        short   mscp_xxx1;              /* unused */
                    155:        u_char  mscp_opcode;            /* opcode */
                    156:        u_char  mscp_flags;             /* end message flags */
                    157:        short   mscp_modifier;          /* modifiers */
                    158:        union {
                    159:        struct {
                    160:                long    Mscp_bytecnt;   /* byte count */
                    161:                long    Mscp_buffer;    /* buffer descriptor */
                    162:                long    Mscp_mapbase;   /* physical addr of map registers */
                    163:                long    Mscp_xxx2;      /* unused */
                    164:                long    Mscp_lbn;       /* logical block number */
                    165:                long    Mscp_xxx4;      /* unused */
                    166:                long    *Mscp_dscptr;   /* pointer to descriptor (software) */
                    167:                long    Mscp_sftwds[17];/* software words, padding */
                    168:        } mscp_generic;
                    169:        struct {
                    170:                short   Mscp_version;   /* MSCP version */
                    171:                short   Mscp_cntflgs;   /* controller flags */
                    172:                short   Mscp_hsttmo;    /* host timeout */
                    173:                short   Mscp_usefrac;   /* use fraction */
                    174:                quad    Mscp_time;      /* time and date */
                    175:                long    Mscp_cntdep;    /* controller dependent parameters */
                    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_format;    /* format (tape density) */
                    184:                short   Mscp_speed;     /* tape speed = (ips * bpi) /1000 */
                    185:                short   Mscp_fmtmenu;   /* format menu */
                    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_mapbase    mscp_un.mscp_generic.Mscp_mapbase
                    208: #define        mscp_lbn        mscp_un.mscp_generic.Mscp_lbn
                    209: #define        mscp_dscptr     mscp_un.mscp_generic.Mscp_dscptr
                    210: #define        mscp_sftwds     mscp_un.mscp_generic.Mscp_sftwds
                    211: #define        mscp_status     mscp_modifier
                    212:  
                    213: /*
                    214:  * Abort / Get Command Status packet
                    215:  */
                    216:  
                    217: #define        mscp_outref     mscp_bytecnt
                    218:  
                    219: /*
                    220:  * Set Controller Characteristics packet
                    221:  */
                    222:  
                    223: #define        mscp_version    mscp_un.mscp_setcntchar.Mscp_version
                    224: #define        mscp_cntflgs    mscp_un.mscp_setcntchar.Mscp_cntflgs
                    225: #define        mscp_hsttmo     mscp_un.mscp_setcntchar.Mscp_hsttmo
                    226: #define        mscp_usefrac    mscp_un.mscp_setcntchar.Mscp_usefrac
                    227: #define        mscp_time       mscp_un.mscp_setcntchar.Mscp_time
                    228: #define        mscp_cntdep     mscp_un.mscp_setcntchar.Mscp_cntdep
                    229:  
                    230: /*
                    231:  * Reposition command packet fields
                    232:  */
                    233:  
                    234: #define mscp_reccnt mscp_bytecnt       /* record/object count */
                    235: #define mscp_tmkcnt mscp_buffer                /* tape mark count */
                    236:  
                    237: /*
                    238:  * Get Unit Status end packet
                    239:  */
                    240:  
                    241: #define        mscp_multunt    mscp_un.mscp_getunitsts.Mscp_multunt
                    242: #define        mscp_unitflgs   mscp_un.mscp_getunitsts.Mscp_unitflgs
                    243: #define        mscp_hostid     mscp_un.mscp_getunitsts.Mscp_hostid
                    244: #define        mscp_unitid     mscp_un.mscp_getunitsts.Mscp_unitid
                    245: #define        mscp_mediaid    mscp_un.mscp_getunitsts.Mscp_mediaid
                    246: #define        mscp_format     mscp_un.mscp_getunitsts.Mscp_format /* density:0=high */
                    247: #define        mscp_speed      mscp_un.mscp_getunitsts.Mscp_speed  /* (ips*bpi)/1000 */
                    248: #define        mscp_fmtmenu    mscp_un.mscp_getunitsts.Mscp_fmtmenu
                    249:  
                    250: /*
                    251:  * Online / Set Unit Characteristics end packet
                    252:  */
                    253:  
                    254: #define        mscp_maxwrt     mscp_dscptr     /* max write byte count */
                    255: #define        mscp_noiserec   mscp_cylinder   /* noise record */
                    256:  
                    257: /*
                    258:  * Set Controller Characteristics end packet
                    259:  */
                    260:  
                    261: #define        mscp_cnttmo     mscp_hsttmo     /* controller timeout */
                    262: #define        mscp_cntcmdl    mscp_usefrac    /* controller soft & hardware version */
                    263: #define        mscp_cntid      mscp_unitid     /* controller id */
                    264:  
                    265:  
                    266: /*
                    267:  * Error Log message format codes
                    268:  */
                    269: #define        M_FM_CNTERR     0       /* Controller error */
                    270: #define        M_FM_BUSADDR    1       /* Host memory access error */
                    271: #define        M_FM_TAPETRN    5       /* Tape transfer error */
                    272: #define        M_FM_STIERR     6       /* STI communication or command failure */
                    273: #define        M_FM_STIDEL     7       /* STI drive error log */
                    274: #define        M_FM_STIFEL   010       /* STI formatter error log */
                    275:  
                    276: /*
                    277:  * Error Log message flags
                    278:  */
                    279: #define        M_LF_SUCC       0200    /* Operation successful */
                    280: #define        M_LF_CONT       0100    /* Operation continuing */
                    281: #define        M_LF_SQNRS      0001    /* Sequence number reset */
                    282:  
                    283: /*
                    284:  * Tape Format Flag Values
                    285:  */
                    286: #define        M_TF_800        001     /* NRZI 800 bpi */
                    287: #define        M_TF_PE         002     /* Phase Encoded 1600 bpi */
                    288: #define        M_TF_GCR        004     /* Group Code Recording 6250 bpi */
                    289: #define        M_TF_BLK        010     /* Cartridge Block Mode */
                    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_position;          /* position (object count) */
                    314:        u_char  mslg_fmtsvr;            /* formatter software version */
                    315:        u_char  mslg_fmthvr;            /* formatter hardware version */
                    316:        short   mslg_xxx2;              /* unused */
                    317:        char    mslg_stiunsucc[62];     /* STI status information */
                    318: };
                    319:  
                    320: #define        mslg_busaddr    mslg_unitid.val[0]
                    321: #define        mslg_sdecyl     mslg_group
                    322: 

unix.superglobalmegacorp.com

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