]> git.lizzy.rs Git - plan9front.git/blob - sys/include/disk.h
add libsat
[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 psecsize;
46         int physalign;
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*);