Blob


1 #pragma src "/sys/src/libdisk"
2 #pragma lib "libdisk.a"
4 /* SCSI interface */
5 typedef struct Scsi Scsi;
6 struct Scsi {
7 QLock lk;
8 char* inquire;
9 int rawfd;
10 int nchange;
11 ulong changetime;
12 };
14 enum {
15 Sread = 0,
16 Swrite,
17 Snone,
18 };
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*);
26 extern int scsiverbose;
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;
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 };
50 Disk* opendisk(char*, int, int);
52 enum {
53 Tfile = 0,
54 Tsd,
55 Tfloppy,
57 Gpart = 0, /* partition info source */
58 Gdisk,
59 Gguess,
60 };
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*);