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