Annotation of Examples/UNIX/SCSI_CD/scsi_commands.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * scsi_commands.h: header file for scsi_command.c
        !             3:  *
        !             4:  * History
        !             5:  * -------
        !             6:  * Tue Sep  3 15:00:13 PDT 1991 James C. Lee at NeXT
        !             7:  *  Created (copied a lot of data structures & functions calls from
        !             8:  *   perftest.c by Mike DeMoney)
        !             9:  */
        !            10: 
        !            11: #ifndef SCSI_COMMANDS
        !            12: #define SCSI_COMMANDS
        !            13: 
        !            14: #import <sys/time.h>
        !            15: #import <bsd/dev/disk.h>
        !            16: #import <sys/types.h>
        !            17: #import <bsd/dev/scsireg.h>
        !            18: 
        !            19: #define Version "0.00"
        !            20: 
        !            21: 
        !            22: struct mode_sense_cmd {
        !            23:        u_int   msc_opcode:8,
        !            24:                msc_lun:3,
        !            25:                msc_mbz1:5,
        !            26:                msc_pcf:2,
        !            27:                msc_page:6,
        !            28:                msc_mbz2:8;
        !            29:        u_char  msc_len;
        !            30:        u_char  msc_ctrl;
        !            31: };
        !            32: 
        !            33: struct param_list_header {
        !            34:        u_char  plh_len;
        !            35:        u_char  plh_medium;
        !            36:        u_char  plh_wp:1,
        !            37:                plh_reserved:7;
        !            38:        u_char  plh_blkdesclen;
        !            39: };
        !            40: 
        !            41: struct block_descriptor {
        !            42:        u_int   bd_density:8,
        !            43:                bd_nblk:24;
        !            44:        u_int   bd_reserved:8,
        !            45:                bd_blklen:24;
        !            46: };
        !            47: 
        !            48: struct device_format_params {
        !            49:        u_char  dfp_savable:1,
        !            50:                dfp_reserved:1,
        !            51:                dfp_pagecode:6;
        !            52:        u_char  dfp_pagelen;
        !            53:        u_short dfp_trkszone;
        !            54:        u_short dfp_altsecszone;
        !            55:        u_short dfp_alttrkszone;
        !            56:        u_short dfp_alttrksvol;
        !            57:        u_short dfp_sectors;
        !            58:        u_short dfp_bytessector;
        !            59:        u_short dfp_interleave;
        !            60:        u_short dfp_trkskew;
        !            61:        u_short dfp_cylskew;
        !            62:        u_char  dfp_ssec:1,
        !            63:                dfp_hsec:1,
        !            64:                dfp_rmb:1,
        !            65:                dfp_surf:1,
        !            66:                dfp_reserved2:4;
        !            67:        u_char  dfp_reserved3;
        !            68:        u_char  dfp_reserved4;
        !            69:        u_char  dfp_reserved5;
        !            70: };
        !            71: 
        !            72: struct rigid_drive_params {
        !            73:        u_char  rdp_savable:1,
        !            74:                rdp_reserved:1,
        !            75:                rdp_pagecode:6;
        !            76:        u_char  rdp_pagelen;
        !            77: 
        !            78:        u_char  rdp_maxcylmsb;
        !            79:        u_char  rdp_maxcylinb;
        !            80:        u_char  rdp_maxcyllsb;
        !            81: 
        !            82:        u_char  rdp_maxheads;
        !            83: 
        !            84:        u_char  rdp_wpstartmsb;
        !            85:        u_char  rdp_wpstartinb;
        !            86:        u_char  rdp_wpstartlsb;
        !            87: 
        !            88:        u_char  rdp_rwcstartmsb;
        !            89:        u_char  rdp_rwcstartinb;
        !            90:        u_char  rdp_rwcstartlsb;
        !            91: 
        !            92:        u_char  rdp_stepratemsb;
        !            93:        u_char  rdp_stepratelsb;
        !            94: 
        !            95:        u_char  rdp_landcylmsb;
        !            96:        u_char  rdp_landcylinb;
        !            97:        u_char  rdp_landcyllsb;
        !            98: 
        !            99:        u_char  rdp_reserved2;
        !           100:        u_char  rdp_reserved3;
        !           101:        u_char  rdp_reserved4;
        !           102: };
        !           103: 
        !           104: #define        THREE_BYTE(x)   \
        !           105:                (((x##msb)<<16)|((x##inb)<<8)|(x##lsb))
        !           106: 
        !           107: #define        TWO_BYTE(x)     \
        !           108:                (((x##msb)<<8)|(x##lsb))
        !           109: 
        !           110: struct mode_sense_reply {
        !           111:        struct param_list_header msr_plh;
        !           112:        struct block_descriptor msr_bd;
        !           113:        union {
        !           114:                struct device_format_params u_msr_dfp;
        !           115:                struct rigid_drive_params u_msr_rdp;
        !           116:        }u;
        !           117: };
        !           118: 
        !           119: 
        !           120: /* C functions */
        !           121: void fatal(const char *msg, ...);
        !           122: int do_inquiry(int fd, struct inquiry_reply *irp, struct esense_reply *erp);
        !           123: int do_testunitready(int fd, struct timeval *tvp, struct esense_reply *erp);
        !           124: int do_modesense(int fd, struct mode_sense_reply *msrp, int page,
        !           125:        struct esense_reply *erp);
        !           126: int do_readcapacity(int fd, struct capacity_reply *crp,
        !           127:        struct esense_reply *erp);
        !           128: int do_seek(int fd, int lba, struct timeval *tvp, struct esense_reply *erp);
        !           129: int do_read(int fd, int lba, int nblks, struct timeval *tvp,
        !           130:        struct esense_reply *erp);
        !           131: int do_write(int fd, int lba, int nblks, struct timeval *tvp,
        !           132:        struct esense_reply *erp);
        !           133: int do_readbuffer(int fd, int alloc_len, int *avail_len, struct timeval *tvp,
        !           134:        struct esense_reply *erp);
        !           135: int do_writebuffer(int fd, int alloc_len, struct timeval *tvp,
        !           136:        struct esense_reply *erp);
        !           137: 
        !           138: void sprint_er(char *string, struct esense_reply *er);
        !           139: void fprint_er(int fd, struct esense_reply *erp);
        !           140: 
        !           141: #endif /* #ifndef SCSI_COMMANDS */

unix.superglobalmegacorp.com

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