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

1998/0327/port/devsd.c (diff list | history)

1998/0325/sys/src/9/port/devsd.c:231,2471998/0327/sys/src/9/port/devsd.c:231,247 (short | long | prev | next)
Change dev read and write to use vlong.
rsc Fri Mar 4 12:44:25 2005
1994/0913    
} 
 
1997/0327    
static long 
1998/0325    
sdread(Chan *c, void *a, long n, vlong offset) 
1998/0327    
sdread(Chan *c, void *a, long n, vlong off) 
1994/0913    
{ 
1998/0319    
 
1995/0325    
	if(c->qid.path & CHDIR) 
1994/0913    
		return devdirread(c, a, n, 0, 0, sdgen); 
 
	return sdio(c, 0, a, n, offset); 
1998/0327    
	return sdio(c, 0, a, n, off); 
1994/0913    
} 
 
1997/0327    
static long 
1998/0325    
sdwrite(Chan *c, char *a, long n, vlong offset) 
1998/0327    
sdwrite(Chan *c, char *a, long n, vlong off) 
1994/0913    
{ 
1996/0607    
	Disk *d; 
 
1998/0325/sys/src/9/port/devsd.c:249,2551998/0327/sys/src/9/port/devsd.c:249,255
1996/0607    
 
	if((d->inquire[0] & 0x1F) == TypeCD) 
		error(Eperm); 
1994/0913    
	return sdio(c, 1, a, n, offset); 
1998/0327    
	return sdio(c, 1, a, n, off); 
1995/0108    
} 
 
1997/0327    
Dev sddevtab = { 
1998/0325/sys/src/9/port/devsd.c:354,3661998/0327/sys/src/9/port/devsd.c:354,366
1994/0913    
	Part *p; 
	uchar *b; 
	ulong block, n, max, x; 
1998/0325    
	ulong offset = off; 
1998/0327    
	ulong offset; 
1994/0913    
 
	d = &disk[DRIVE(c->qid)]; 
	p = &d->table[PART(c->qid)]; 
1995/0403    
 
1994/0913    
	block = (offset / d->bsize) + p->beg; 
	n = (offset + len + d->bsize - 1) / d->bsize + p->beg - block; 
1998/0327    
	block = (off / d->bsize) + p->beg; 
	n = (off + len + d->bsize - 1) / d->bsize + p->beg - block; 
1994/0913    
	max = SCSImaxxfer / d->bsize; 
	if(n > max) 
		n = max; 
1998/0325/sys/src/9/port/devsd.c:373,3791998/0327/sys/src/9/port/devsd.c:373,379
1994/0913    
	if(b == 0) 
1996/0607    
		return scsierrstr(STnomem); 
 
1994/0913    
	offset %= d->bsize; 
1998/0327    
	offset = off % d->bsize; 
1994/0913    
	if(write) { 
		if(offset || len % d->bsize) { 
			x = scsibio(d->t, d->lun, SCSIread, b, n, d->bsize, block); 


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