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