xref: /plan9-contrib/sys/include/disk.h (revision d46c239f8612929b7dbade67d0d071633df3a15d)
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