68 lines
1.1 KiB
C
68 lines
1.1 KiB
C
#pragma src "/sys/src/libdisk"
|
|
#pragma lib "libdisk.a"
|
|
|
|
/* SCSI interface */
|
|
typedef struct Scsi Scsi;
|
|
struct Scsi {
|
|
QLock;
|
|
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*);
|
|
void closescsi(Scsi*);
|
|
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 psecsize;
|
|
int physalign;
|
|
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*);
|