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 void closescsi(Scsi*); 25 int scsiready(Scsi*); 26 27 extern int scsiverbose; 28 29 /* disk partition interface */ 30 typedef struct Disk Disk; 31 struct Disk { 32 char *prefix; 33 char *part; 34 int fd; 35 int wfd; 36 int ctlfd; 37 int rdonly; 38 int type; 39 40 vlong secs; 41 vlong secsize; 42 vlong size; 43 vlong offset; /* within larger disk, perhaps */ 44 int width; /* of disk size in bytes as decimal string */ 45 int c; 46 int h; 47 int s; 48 int chssrc; 49 }; 50 51 Disk* opendisk(char*, int, int); 52 53 enum { 54 Tfile = 0, 55 Tsd, 56 Tfloppy, 57 58 Gpart = 0, /* partition info source */ 59 Gdisk, 60 Gguess, 61 }; 62 63 /* proto file parsing */ 64 typedef void Protoenum(char *new, char *old, Dir *d, void *a); 65 typedef void Protowarn(char *msg, void *a); 66 int rdproto(char*, char*, Protoenum*, Protowarn*, void*); 67