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