]> git.lizzy.rs Git - plan9front.git/blob - sys/include/disk.h
merge
[plan9front.git] / sys / include / disk.h
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*);