1 #pragma src "/sys/src/libdisk" 2 #pragma lib "libdisk.a" 3 4 /* SCSI interface */ 5 typedef struct Scsi Scsi; 6 struct Scsi { 7 QLock; 8 char* inquire; 9 int rawfd; 10 int nchange; 11 ulong changetime; 12 }; 13 14 enum { 15 Sread = 0, 16 Swrite, 17 Snone, 18 }; 19 20 char* scsierror(int, int); 21 int scsicmd(Scsi*, uchar*, int, void*, int, int); 22 int scsi(Scsi*, uchar*, int, void*, int, int); 23 Scsi* openscsi(char*); 24 int scsiready(Scsi*); 25 26 extern int scsiverbose; 27 28 /* disk partition interface */ 29 typedef struct Disk Disk; 30 struct Disk { 31 char *prefix; 32 char *part; 33 int fd; 34 int wfd; 35 int ctlfd; 36 int rdonly; 37 int type; 38 39 vlong secs; 40 vlong secsize; 41 vlong size; 42 vlong offset; /* within larger disk, perhaps */ 43 int width; /* of disk size in bytes as decimal string */ 44 int c; 45 int h; 46 int s; 47 int chssrc; 48 }; 49 50 Disk* opendisk(char*, int, int); 51 52 enum { 53 Tfile = 0, 54 Tsd, 55 Tfloppy, 56 57 Gpart = 0, /* partition info source */ 58 Gdisk, 59 Gguess, 60 }; 61 62 /* proto file parsing */ 63 typedef void Protoenum(char *new, char *old, Dir *d, void *a); 64 typedef void Protowarn(char *msg, void *a); 65 int rdproto(char*, char*, Protoenum*, Protowarn*, void*); 66