#pragma src "/sys/src/libdisk" #pragma lib "libdisk.a" /* SCSI interface */ typedef struct Scsi Scsi; struct Scsi { QLock; char* inquire; int rawfd; int nchange; ulong changetime; }; enum { Sread = 0, Swrite, Snone, }; char* scsierror(int, int); int scsicmd(Scsi*, uchar*, int, void*, int, int); int scsi(Scsi*, uchar*, int, void*, int, int); Scsi* openscsi(char*); void closescsi(Scsi*); int scsiready(Scsi*); extern int scsiverbose; /* disk partition interface */ typedef struct Disk Disk; struct Disk { char *prefix; char *part; int fd; int wfd; int ctlfd; int rdonly; int type; vlong secs; vlong secsize; vlong size; vlong offset; /* within larger disk, perhaps */ int width; /* of disk size in bytes as decimal string */ int c; int h; int s; int chssrc; }; Disk* opendisk(char*, int, int); enum { Tfile = 0, Tsd, Tfloppy, Gpart = 0, /* partition info source */ Gdisk, Gguess, }; /* proto file parsing */ typedef void Protoenum(char *new, char *old, Dir *d, void *a); typedef void Protowarn(char *msg, void *a); int rdproto(char*, char*, Protoenum*, Protowarn*, void*);