Annotation of 42BSD/sys/vax/mscp.h, revision 1.1

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

unix.superglobalmegacorp.com

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