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

2002/0406/port/devwpsd.c (diff list | history)

2002/0404/sys/src/9/port/devwpsd.c:34,392002/0406/sys/src/9/port/devwpsd.c:34,41 (short | long | prev | next)
2002/0404    
{ 
	CMpart, 
	CMdelpart, 
2002/0406    
	CMwpenable, 
	CMwpblocks, 
2002/0404    
	CMwildcard, 
}; 
 
2002/0404/sys/src/9/port/devwpsd.c:41,462002/0406/sys/src/9/port/devwpsd.c:43,50
2002/0404    
{ 
	CMpart,		"part",		3, 
	CMdelpart,	"delpart",	1, 
2002/0406    
	CMwpenable,	"wpenable",	0, 
	CMwpblocks,	"wpblocks",	2, 
2002/0404    
	CMwildcard,	"*",		0, 
}; 
 
2002/0404/sys/src/9/port/devwpsd.c:719,7252002/0406/sys/src/9/port/devwpsd.c:723,729
2002/0330    
} 
 
static long 
sdbio(Chan* c, int write, char* a, long len, vlong off) 
2002/0406    
sdio(Chan* c, int write, char* a, long len, vlong off) 
2002/0330    
{ 
	int nchange; 
	long l; 
2002/0404/sys/src/9/port/devwpsd.c:785,7952002/0406/sys/src/9/port/devwpsd.c:789,799
2002/0330    
		poperror(); 
	} 
 
	b = sdmalloc(nb*unit->secsize); 
2002/0406    
	b = malloc(nb*unit->secsize); 
2002/0330    
	if(b == nil) 
		error(Enomem); 
	if(waserror()){ 
		sdfree(b); 
2002/0406    
		free(b); 
2002/0330    
		if(!(unit->inquiry[1] & 0x80)) 
			decref(&sdev->r);		/* gadverdamme! */ 
		nexterror(); 
2002/0404/sys/src/9/port/devwpsd.c:829,8352002/0406/sys/src/9/port/devwpsd.c:833,839
2002/0330    
			len = l - offset; 
		memmove(a, b+offset, len); 
	} 
	sdfree(b); 
2002/0406    
	free(b); 
2002/0330    
	poperror(); 
 
	if(unit->inquiry[1] & 0x80){ 
2002/0404/sys/src/9/port/devwpsd.c:851,8572002/0406/sys/src/9/port/devwpsd.c:855,861
2002/0330    
 
	data = nil; 
	if(n){ 
		if((data = sdmalloc(n)) == nil) 
2002/0406    
		if((data = malloc(n)) == nil) 
2002/0330    
			error(Enomem); 
		if(r->write) 
			memmove(data, a, n); 
2002/0404/sys/src/9/port/devwpsd.c:861,8672002/0406/sys/src/9/port/devwpsd.c:865,871
2002/0330    
 
	if(waserror()){ 
		if(data != nil){ 
			sdfree(data); 
2002/0406    
			free(data); 
2002/0330    
			r->data = nil; 
		} 
		nexterror(); 
2002/0404/sys/src/9/port/devwpsd.c:873,8792002/0406/sys/src/9/port/devwpsd.c:877,883
2002/0330    
	if(!r->write && r->rlen > 0) 
		memmove(a, data, r->rlen); 
	if(data != nil){ 
		sdfree(data); 
2002/0406    
		free(data); 
2002/0330    
		r->data = nil; 
	} 
	poperror(); 
2002/0404/sys/src/9/port/devwpsd.c:986,9922002/0406/sys/src/9/port/devwpsd.c:990,996
2002/0330    
		return i; 
 
	case Qpart: 
		return sdbio(c, 0, a, n, off); 
2002/0406    
		return sdio(c, 0, a, n, off); 
2002/0330    
	} 
 
	return 0; 
2002/0404/sys/src/9/port/devwpsd.c:1238,12442002/0406/sys/src/9/port/devwpsd.c:1242,1248
2002/0330    
		poperror(); 
		break; 
	case Qpart: 
		return sdbio(c, 1, a, n, off); 
2002/0406    
		return sdio(c, 1, a, n, off); 
2002/0330    
	} 
 
	return n; 


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