aboutsummaryrefslogtreecommitdiff
path: root/include/disk.h
diff options
context:
space:
mode:
authorwkj <devnull@localhost>2004-06-17 01:46:29 +0000
committerwkj <devnull@localhost>2004-06-17 01:46:29 +0000
commite1dddc053287874e82e2b67f95ccee7d7bc63e22 (patch)
tree15e76d20c16f5fc500a18a84ad905eadf28ca3ec /include/disk.h
parent778df25e996f8344a917fc5d3cf1b962ab728ada (diff)
downloadplan9port-e1dddc053287874e82e2b67f95ccee7d7bc63e22.tar.gz
plan9port-e1dddc053287874e82e2b67f95ccee7d7bc63e22.tar.bz2
plan9port-e1dddc053287874e82e2b67f95ccee7d7bc63e22.zip
Import proto file parser for dump9660.
Diffstat (limited to 'include/disk.h')
-rw-r--r--include/disk.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/include/disk.h b/include/disk.h
new file mode 100644
index 00000000..a887866e
--- /dev/null
+++ b/include/disk.h
@@ -0,0 +1,65 @@
+#pragma src "/sys/src/libdisk"
+#pragma lib "libdisk.a"
+
+/* SCSI interface */
+typedef struct Scsi Scsi;
+struct Scsi {
+ QLock lk;
+ char* inquire;
+ int rawfd;
+ int nchange;
+ ulong changetime;
+};
+
+enum {
+ Sread = 0,
+ Swrite,
+ Snone,
+};
+
+char* scsierror(int, int);
+int scsicmd(Scsi*, uchar*, int, void*, int, int);
+int scsi(Scsi*, uchar*, int, void*, int, int);
+Scsi* openscsi(char*);
+int scsiready(Scsi*);
+
+extern int scsiverbose;
+
+/* disk partition interface */
+typedef struct Disk Disk;
+struct Disk {
+ char *prefix;
+ char *part;
+ int fd;
+ int wfd;
+ int ctlfd;
+ int rdonly;
+ int type;
+
+ vlong secs;
+ vlong secsize;
+ vlong size;
+ vlong offset; /* within larger disk, perhaps */
+ int width; /* of disk size in bytes as decimal string */
+ int c;
+ int h;
+ int s;
+ int chssrc;
+};
+
+Disk* opendisk(char*, int, int);
+
+enum {
+ Tfile = 0,
+ Tsd,
+ Tfloppy,
+
+ Gpart = 0, /* partition info source */
+ Gdisk,
+ Gguess,
+};
+
+/* proto file parsing */
+typedef void Protoenum(char *new, char *old, Dir *d, void *a);
+typedef void Protowarn(char *msg, void *a);
+int rdproto(char*, char*, Protoenum*, Protowarn*, void*);