plan 9 kernel history: overview | file list | diff list

1995/0403/port/devsd.c (diff list | history)

1995/0329/sys/src/9/port/devsd.c:9,141995/0403/sys/src/9/port/devsd.c:9,21 (short | long | prev | next)
1994/0913    
#include	"../port/error.h" 
#include	"devtab.h" 
 
1995/0403    
enum { 
	TypeDA		= 0x00,		/* Direct Access */ 
	TypeWO		= 0x04,		/* Worm */ 
	TypeCD		= 0x05,		/* CD-ROM */ 
	TypeMO		= 0x07,		/* rewriteable Magneto-Optical */ 
}; 
 
1994/0913    
enum 
{ 
1994/1228    
	LogNpart	= 4, 
1995/0329/sys/src/9/port/devsd.c:51,561995/0403/sys/src/9/port/devsd.c:58,68
1994/0913    
static	void	sdrdpart(Disk*); 
static	long	sdio(Chan*, int, char*, ulong, ulong); 
 
1995/0403    
static int types[] = { 
	TypeDA, TypeWO, TypeCD, TypeMO, 
	-1, 
}; 
 
1994/0913    
static int 
1995/0325    
sdgen(Chan *c, Dirtab*, long, long s, Dir *dirp) 
1994/0913    
{ 
1995/0329/sys/src/9/port/devsd.c:93,991995/0403/sys/src/9/port/devsd.c:105,111
1994/0913    
	dev = 0; 
	for(;;) { 
		d = &disk[ndisk]; 
		dev = scsiinv(dev, 0, &d->t, &d->inquire, d->id); 
1995/0403    
		dev = scsiinv(dev, types, &d->t, &d->inquire, d->id); 
1994/0913    
		if(dev < 0) 
			break; 
 
1995/0329/sys/src/9/port/devsd.c:140,1471995/0403/sys/src/9/port/devsd.c:152,173
1994/0913    
 
			d->size = s; 
			d->bsize = b; 
			sprint(d->vol, "sd%d", ndisk); 
1995/0403    
			switch(d->inquire[0] & 0x1F){ 
1994/0913    
 
1995/0403    
			case TypeDA: 
			case TypeWO: 
			case TypeMO: 
				sprint(d->vol, "sd%d", ndisk); 
				break; 
 
			case TypeCD: 
				sprint(d->vol, "cd%d", ndisk); 
				break; 
 
			default: 
				continue; 
			} 
 
1994/0913    
			if(++ndisk >= Ndisk) 
				break; 
			d++; 
1995/0329/sys/src/9/port/devsd.c:278,2831995/0403/sys/src/9/port/devsd.c:304,315
1994/0913    
	p++; 
	d->npart = 2; 
 
1995/0403    
	if((d->inquire[0] & 0x1F) == TypeCD){ 
		scsifree(b); 
		qunlock(d); 
		return; 
	} 
 
1994/0913    
	scsibio(d->t, d->lun, SCSIread, b, 1, d->bsize, d->table[0].end-1); 
	b[d->bsize-1] = '\0'; 
 
1995/0329/sys/src/9/port/devsd.c:319,3241995/0403/sys/src/9/port/devsd.c:351,359
1994/0913    
 
	d = &disk[DRIVE(c->qid)]; 
	p = &d->table[PART(c->qid)]; 
1995/0403    
 
	if(write && (d->inquire[0] & 0x1F) == TypeCD) 
		error(Eperm); 
1994/0913    
 
	block = (offset / d->bsize) + p->beg; 
	n = (offset + len + d->bsize - 1) / d->bsize + p->beg - block; 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)