home *** CD-ROM | disk | FTP | other *** search
- /*
- * scsi_commands.h: header file for scsi_command.c
- *
- * History
- * -------
- * Tue Sep 3 15:00:13 PDT 1991 James C. Lee at NeXT
- * Created (copied a lot of data structures & functions calls from
- * perftest.c by Mike DeMoney)
- */
-
- #ifndef SCSI_COMMANDS
- #define SCSI_COMMANDS
-
- #import <sys/time.h>
- #import <bsd/dev/disk.h>
- #import <sys/types.h>
- #import <bsd/dev/scsireg.h>
-
- #define Version "0.00"
-
-
- struct mode_sense_cmd {
- u_int msc_opcode:8,
- msc_lun:3,
- msc_mbz1:5,
- msc_pcf:2,
- msc_page:6,
- msc_mbz2:8;
- u_char msc_len;
- u_char msc_ctrl;
- };
-
- struct param_list_header {
- u_char plh_len;
- u_char plh_medium;
- u_char plh_wp:1,
- plh_reserved:7;
- u_char plh_blkdesclen;
- };
-
- struct block_descriptor {
- u_int bd_density:8,
- bd_nblk:24;
- u_int bd_reserved:8,
- bd_blklen:24;
- };
-
- struct device_format_params {
- u_char dfp_savable:1,
- dfp_reserved:1,
- dfp_pagecode:6;
- u_char dfp_pagelen;
- u_short dfp_trkszone;
- u_short dfp_altsecszone;
- u_short dfp_alttrkszone;
- u_short dfp_alttrksvol;
- u_short dfp_sectors;
- u_short dfp_bytessector;
- u_short dfp_interleave;
- u_short dfp_trkskew;
- u_short dfp_cylskew;
- u_char dfp_ssec:1,
- dfp_hsec:1,
- dfp_rmb:1,
- dfp_surf:1,
- dfp_reserved2:4;
- u_char dfp_reserved3;
- u_char dfp_reserved4;
- u_char dfp_reserved5;
- };
-
- struct rigid_drive_params {
- u_char rdp_savable:1,
- rdp_reserved:1,
- rdp_pagecode:6;
- u_char rdp_pagelen;
-
- u_char rdp_maxcylmsb;
- u_char rdp_maxcylinb;
- u_char rdp_maxcyllsb;
-
- u_char rdp_maxheads;
-
- u_char rdp_wpstartmsb;
- u_char rdp_wpstartinb;
- u_char rdp_wpstartlsb;
-
- u_char rdp_rwcstartmsb;
- u_char rdp_rwcstartinb;
- u_char rdp_rwcstartlsb;
-
- u_char rdp_stepratemsb;
- u_char rdp_stepratelsb;
-
- u_char rdp_landcylmsb;
- u_char rdp_landcylinb;
- u_char rdp_landcyllsb;
-
- u_char rdp_reserved2;
- u_char rdp_reserved3;
- u_char rdp_reserved4;
- };
-
- #define THREE_BYTE(x) \
- (((x##msb)<<16)|((x##inb)<<8)|(x##lsb))
-
- #define TWO_BYTE(x) \
- (((x##msb)<<8)|(x##lsb))
-
- struct mode_sense_reply {
- struct param_list_header msr_plh;
- struct block_descriptor msr_bd;
- union {
- struct device_format_params u_msr_dfp;
- struct rigid_drive_params u_msr_rdp;
- }u;
- };
-
-
- /* C functions */
- void fatal(const char *msg, ...);
- int do_inquiry(int fd, struct inquiry_reply *irp, struct esense_reply *erp);
- int do_testunitready(int fd, struct timeval *tvp, struct esense_reply *erp);
- int do_modesense(int fd, struct mode_sense_reply *msrp, int page,
- struct esense_reply *erp);
- int do_readcapacity(int fd, struct capacity_reply *crp,
- struct esense_reply *erp);
- int do_seek(int fd, int lba, struct timeval *tvp, struct esense_reply *erp);
- int do_read(int fd, int lba, int nblks, struct timeval *tvp,
- struct esense_reply *erp);
- int do_write(int fd, int lba, int nblks, struct timeval *tvp,
- struct esense_reply *erp);
- int do_readbuffer(int fd, int alloc_len, int *avail_len, struct timeval *tvp,
- struct esense_reply *erp);
- int do_writebuffer(int fd, int alloc_len, struct timeval *tvp,
- struct esense_reply *erp);
-
- void sprint_er(char *string, struct esense_reply *er);
- void fprint_er(int fd, struct esense_reply *erp);
-
- #endif /* #ifndef SCSI_COMMANDS */
-