| #ifndef _DISK_H_ |
| #define _DISK_H_ 1 |
| #if defined(__cplusplus) |
| extern "C" { |
| #endif |
| |
| |
| AUTOLIB(disk) |
| |
| #if 0 |
| /* 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; |
| #endif |
| |
| /* 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*); |
| |
| #if defined(__cplusplus) |
| } |
| #endif |
| #endif |