Annotation of Examples/UNIX/SCSI_CD/scsi_commands.h, revision 1.1.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.