xref: /plan9-contrib/sys/include/disk.h (revision fef25afaa1d0de6b039d347a8f0b354a9a54f5ff)
17dd7cddfSDavid du Colombier #pragma src "/sys/src/libdisk"
27dd7cddfSDavid du Colombier #pragma lib "libdisk.a"
37dd7cddfSDavid du Colombier 
4*fef25afaSDavid du Colombier #include <diskcmd.h>
5*fef25afaSDavid du Colombier 
67dd7cddfSDavid du Colombier /* SCSI interface */
77dd7cddfSDavid du Colombier typedef struct Scsi Scsi;
87dd7cddfSDavid du Colombier struct Scsi {
980ee5cbfSDavid du Colombier 	QLock;
107dd7cddfSDavid du Colombier 	char*	inquire;
117dd7cddfSDavid du Colombier 	int	rawfd;
127dd7cddfSDavid du Colombier 	int	nchange;
137dd7cddfSDavid du Colombier 	ulong	changetime;
147dd7cddfSDavid du Colombier };
157dd7cddfSDavid du Colombier 
167dd7cddfSDavid du Colombier enum {
177dd7cddfSDavid du Colombier 	Sread = 0,
187dd7cddfSDavid du Colombier 	Swrite,
197dd7cddfSDavid du Colombier 	Snone,
207dd7cddfSDavid du Colombier };
217dd7cddfSDavid du Colombier 
227dd7cddfSDavid du Colombier char*	scsierror(int, int);
237dd7cddfSDavid du Colombier int		scsicmd(Scsi*, uchar*, int, void*, int, int);
247dd7cddfSDavid du Colombier int		scsi(Scsi*, uchar*, int, void*, int, int);
257dd7cddfSDavid du Colombier Scsi*		openscsi(char*);
26af6a38e6SDavid du Colombier void		closescsi(Scsi*);
277dd7cddfSDavid du Colombier int		scsiready(Scsi*);
287dd7cddfSDavid du Colombier 
297dd7cddfSDavid du Colombier extern int		scsiverbose;
307dd7cddfSDavid du Colombier 
317dd7cddfSDavid du Colombier /* disk partition interface */
327dd7cddfSDavid du Colombier typedef struct Disk Disk;
337dd7cddfSDavid du Colombier struct Disk {
347dd7cddfSDavid du Colombier 	char *prefix;
359a747e4fSDavid du Colombier 	char *part;
367dd7cddfSDavid du Colombier 	int fd;
377dd7cddfSDavid du Colombier 	int wfd;
387dd7cddfSDavid du Colombier 	int ctlfd;
397dd7cddfSDavid du Colombier 	int rdonly;
407dd7cddfSDavid du Colombier 	int type;
417dd7cddfSDavid du Colombier 
427dd7cddfSDavid du Colombier 	vlong secs;
437dd7cddfSDavid du Colombier 	vlong secsize;
447dd7cddfSDavid du Colombier 	vlong size;
457dd7cddfSDavid du Colombier 	vlong offset;	/* within larger disk, perhaps */
467dd7cddfSDavid du Colombier 	int width;	/* of disk size in bytes as decimal string */
477dd7cddfSDavid du Colombier 	int c;
487dd7cddfSDavid du Colombier 	int h;
497dd7cddfSDavid du Colombier 	int s;
507dd7cddfSDavid du Colombier 	int chssrc;
517dd7cddfSDavid du Colombier };
527dd7cddfSDavid du Colombier 
537dd7cddfSDavid du Colombier Disk*	opendisk(char*, int, int);
547dd7cddfSDavid du Colombier 
557dd7cddfSDavid du Colombier enum {
567dd7cddfSDavid du Colombier 	Tfile = 0,
577dd7cddfSDavid du Colombier 	Tsd,
587dd7cddfSDavid du Colombier 	Tfloppy,
597dd7cddfSDavid du Colombier 
607dd7cddfSDavid du Colombier 	Gpart = 0,	/* partition info source */
617dd7cddfSDavid du Colombier 	Gdisk,
627dd7cddfSDavid du Colombier 	Gguess,
637dd7cddfSDavid du Colombier };
647dd7cddfSDavid du Colombier 
657dd7cddfSDavid du Colombier /* proto file parsing */
667dd7cddfSDavid du Colombier typedef void Protoenum(char *new, char *old, Dir *d, void *a);
677dd7cddfSDavid du Colombier typedef void Protowarn(char *msg, void *a);
687dd7cddfSDavid du Colombier int rdproto(char*, char*, Protoenum*, Protowarn*, void*);
69