📄 scsivar.h
字号:
u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz:2; /* Must be Zero */ u_char pad[16]; /* Pad */ }space; /* * VERIFY Command */ struct sz_vfy_cm { u_char fixed:1; /* Fixed */ u_char bytcmp:1; /* Byte Compare */ u_char :3; /* Reserved */ u_char lun:3; /* Logical Unit Number */ u_char verflen2; /* Verification Length (MSB) */ u_char verflen1; /* Verification Length */ u_char verflen0; /* Verification Length (LSB) */ u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz:2; /* Must be Zero */ u_char pad[16]; /* Pad */ }vfy; /* * ERASE Command */ struct sz_era_cm { u_char longbit:1; /* Long */ u_char :4; /* Reserved */ u_char lun:3; /* Logical Unit Number */ u_char :8; /* Reserved */ u_char :8; /* Reserved */ u_char :8; /* Reserved */ u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz:2; /* Must be Zero */ u_char pad[16]; /* Pad */ }erase; /* * SSUNIT/LOAD/UNLOAD Command */ struct sz_ld_cm { u_char immed:1; /* Immediate */ u_char :4; /* Reserved */ u_char lun:3; /* Logical Unit Number */ u_char :8; /* Reserved */ u_char :8; /* Reserved */ u_char load:1; /* Load */ u_char reten:1; /* Retention */ u_char :6; /* Reserved */ u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz:2; /* Must be Zero */ u_char pad[16]; /* Pad */ }ld; /* * SEND DIAGNOSTIC Command */ struct sz_snd_diag_cm { u_char unitofl:1; /* Unit Offline */ u_char devofl:1; /* Device Offline */ u_char selftst:1; /* Self Test */ u_char :2; /* Reserved */ u_char lun:3; /* Logical Unit Number */ u_char :8; /* Reserved */ u_char mbz1[2]; /* Must be Zero */ u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz:2; /* Must be Zero */ u_char pad[16]; /* Pad */ }diag; /* * RECEIVE DIAGNOSTIC RESULT Command */ struct sz_recdiag_cm { u_char :5; /* Reserved */ u_char lun:3; /* Logical Unit Number */ u_char :8; /* Reserved */ u_char aloclen1; /* Allocation Length (MSB) */ u_char aloclen0; /* Allocation Length (LSB)_ */ u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz:2; /* Must be Zero */ u_char pad[16]; /* Pad */ }recdiag; /* * MODE SELECT Command */ struct sz_modsel_cm { u_char sp:1; /* Save Parameters (DISK only) */ u_char mbz0:3; /* Reserved (all) */ u_char pf:1; /* Page Format */ u_char lun:3; /* Logical Unit Number (all) */ u_char :8; /* Reserved */ u_char :8; /* Reserved */ u_char pll; /* Parameter List Length */ u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz:2; /* Must be Zero */ /* Parameter List Header */ u_char :8; /* Reserved */ u_char :8; /* Reserved */ u_char speed:4; /* Was mbz1 now speed */ u_char bufmode:3; /* Buffered Mode */ u_char :1; /* Reserved */ u_char rdeclen; /* Record Descriptor Length */ /* Parameter List Block Descriptor */ u_char density; /* Was mbz2 now its density */ u_char numofrec2; /* Number of Records (MSB) */ u_char numofrec1; /* Number of Records */ u_char numofrec0; /* Number of Records (LSB) */ u_char :8; /* Reserved */ u_char reclen2; /* Record Length (MSB) */ u_char reclen1; /* Record Length */ u_char reclen0; /* Record Length (LSB) */ u_char vulen; /* Vendor Unique Length */ u_char nof:3; /* Enable Fillers */ u_char mbz3:3; /* Must be Zero */ u_char notimo:1; /* Disable Reselect timeouts */ u_char vu7:1; /* Direct Track Access */ u_char pad[2]; /* Pad */ }modsel; /* * Track SELECT Command */ struct sz_trksel_cm { u_char :5; /* Reserved */ u_char lun:3; /* Logical Unit Number */ u_char :8; /* Reserved */ u_char :8; /* Reserved */ u_char trkval; /* Track Value */ u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz:2; /* Must be Zero */ u_char pad[16]; /* Pad */ }trksel; /* * RESERVE UNIT Command * RELEASE UNIT Command */ struct sz_runit_cm { u_char :1; /* Reserved */ u_char thrdpdev:3; /* Third Party Device */ u_char thrdp:1; /* Third Party */ u_char lun:3; /* Logical Unit Number */ u_char :8; /* Reserved */ u_char :8; /* Reserved */ u_char :8; /* Reserved */ u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz:2; /* Must be Zero */ u_char pad[16]; /* Pad */ }runit; /* * DISK specific: * READ CAPACITY Command * Read/Write Long */ struct sz_rdcap_cm { u_char reladr:1; /* RelAdr (NOTE: spec dose not say!) */ u_char :4; /* Reserved */ u_char lun:3; /* Logical Unit Number */ u_char lbaddr3; /* Logical Block Address (MSB) */ u_char lbaddr2; /* Logical Block Address */ u_char lbaddr1; /* Logical Block Address */ u_char lbaddr0; /* Logical Block Address (LSB) */ u_char :8; /* Reserved */ u_char :8; /* Reserved */ u_char pmi:1; /* Partial Media Indicator */ u_char :5; /* Reserved */ u_char mbz1:2; /* Vendor Unique */ u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz2:2; /* Vendor Unique */ u_char pad[12]; /* Pad */ }rdcap; struct sz_rwl_cm { u_char reladr:1; /* RelAdr (NOTE: spec dose not say!) */ u_char :4; /* Reserved */ u_char lun:3; /* Logical Unit Number */ u_char lbaddr3:7; /* Logical Block Address (MSB) */ u_char phad:1; /* Physical Address Flag */ u_char lbaddr2; /* Logical Block Address */ u_char lbaddr1; /* Logical Block Address */ u_char lbaddr0; /* Logical Block Address (LSB) */ u_char :8; /* Reserved */ u_char :8; /* Reserved */ u_char dspec:8; /* Drive specific byte 55:0 22/23:1 */ u_char link:1; /* Link */ u_char flag:1; /* Flag */ u_char :4; /* Reserved */ u_char mbz2:2; /* Vendor Unique */ u_char pad[12]; /* Pad */ }rwl; }cmd;};/* * Data Format Structure */struct sz_datfmt { union { /* * Extended Sense Data Format */ struct sz_exsns_dt { u_char errcode:4; /* Error Code */ u_char errclass:3; /* Error Class */ u_char valid:1; /* Valid */ u_char segnum; /* Segment Number */ u_char snskey:4; /* Sense Key */ u_char :1; /* Reserved */ u_char ili:1; /* Illegal Length Indicator */ u_char eom:1; /* End of Medium */ u_char filmrk:1; /* Filemark */ u_char infobyte3; /* Information Byte (MSB) */ u_char infobyte2; /* Information Byte */ u_char infobyte1; /* Information Byte */ u_char infobyte0; /* Information Byte (LSB) */ u_char asl; /* Additional Sense Length */ union { /* Additional sense bytes */ struct { /* TAPE specific bytes */ u_char ctlr; /* Controller internal error code */ u_char drv0; /* Drive error byte */ u_char drv1; /* Drive error byte */ u_char pad[9]; /* Pad */ } tz_asb; struct { /* DISK specific bytes */ u_char rb1[4]; /* Reserved bytes */ u_char asc; /* Additional Sense Code */ u_char rb2[5]; /* Reserved bytes */ u_char pad[2]; /* Pad */ } rz_asb; struct { /* CDROM specific bytes */ u_char rb1[4]; /* Reserved bytes */ u_char asc; /* Additional Sense Code */ u_char rb2; /* Reserved byte */ u_char frufld; /* Field Replacable Unit failed */ u_char bitp:3; /* Bit Pointer */ u_char bpv:1; /* Bit Pointer Valid */ u_char vu:2; /* Vendor Unique */ u_char cd:1; /* Command / Data */ u_char fpv:1; /* Field Pointer Valid */ u_char fpmsb; /* Field Pointer (MSB) */ u_char fplsb; /* Field Pointer (LSB) */ u_char pad[2]; /* Pad */ } cd_asb; } asb; u_char pad1[24]; }exsns; /* * READ BLOCK LIMITS Data */ struct sz_rd_blklim_dt { u_char :8; /* Reserved */ u_char maxreclen2; /* Maximum Record Length (MSB) */ u_char maxreclen1; /* Maximum Record Length */ u_char maxreclen0; /* Maximum Record Length (LSB) */ u_char minreclen1; /* Minimum Record Length (MSB) */ u_char minreclen0; /* Minimum Record Length (LSB) */ u_char pad[14]; /* Pad */ u_char pad1[24]; }rdblim; /* * DISK specific: * READ CAPACITY Data */ struct sz_rdcap_dt { u_char lbaddr3; /* Logical block Address (MSB) */ u_char lbaddr2; /* Logical block Address */ u_char lbaddr1; /* Logical block Address */ u_char lbaddr0; /* Logical block Address (LSB) */ u_char blklen3; /* Block Length (MSB) */ u_char blklen2; /* Block Length */ u_char blklen1; /* Block Length */ u_char blklen0; /* Block Length (LSB) */ u_char pad[12]; /* Pad */ u_char pad1[24]; }rdcap; /* * INQUIRY Data * * NOTE: the RRD40 returns more data than we allocate space * for, but the extra data is not needed by the driver * so we don't bother to read it in. */ struct sz_inq_dt { u_char perfdt; /* Peripheral Deice Type */ u_char devtq:7; /* Device Type Qualifier */ u_char rmb:1; /* Removable Media Bit */ u_char version; /* Version */ u_char :8; /* Reserved */ u_char addlen; /* Additional Length */ u_char rsvd[3]; /* Reserved */ u_char vndrid[8]; /* Vendor ID (ASCII) */ u_char prodid[16]; /* Product ID (ASCII) */ u_char revlvl[4]; /* Revision level (ASCII) */ u_char revdata[8]; /* Revision data (ASCII) */ }inq; /* * MODE SENSE Data for TAPES */ struct sz_modsns_dt { /* Parameter List Header */ u_char sdlen; /* Sense Data Length */ u_char mbz1:8; /* Must be Zero */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -