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

1991/0402/power/devhotrod.c (diff list | history)

1991/0401/sys/src/9/power/devhotrod.c:25,311991/0402/sys/src/9/power/devhotrod.c:25,31 (short | long | prev | next)
1991/0303    
/* 
1991/0307    
 * If 1, ENABCKSUM causes data transfers to have checksums 
1991/0303    
 */ 
1991/0331    
#define	ENABCKSUM	0 
1991/0402    
#define	ENABCKSUM	1 
1991/0303    
 
1990/1013    
typedef struct Hotrod	Hotrod; 
 
1991/0401/sys/src/9/power/devhotrod.c:278,2831991/0402/sys/src/9/power/devhotrod.c:278,284
1991/0212    
			 *  use supplied buffer, no need to lock for reply 
			 */ 
1991/0306    
			isflush = 0; 
1991/0402    
memset(buf, 0, n); 
1991/0306    
			mp = &((User*)(u->p->upage->pa|KZERO))->khot; 
			if(mp->abort){	/* use reserved flush msg */ 
				mp = &((User*)(u->p->upage->pa|KZERO))->fhot; 
1991/0401/sys/src/9/power/devhotrod.c:313,3231991/0402/sys/src/9/power/devhotrod.c:314,334
1991/0303    
			if(mp->param[2] != hotsum(buf, m, mp->param[2])){ 
1991/0307    
				hp->addr->error++; 
1991/0303    
				print("hotrod cksum err is %lux sb %lux\n", 
					hotsum(buf, n, 1), mp->param[2]); 
1991/0307    
{int i; for(i=0; i<8; i++) print("%lux\n", ((ulong*)buf)[i]); } 
1991/0402    
					hotsum(buf, m, 1), mp->param[2]); 
				print("addr %lux\n", ((char*)buf)+m); 
				{ 
					int i; 
					ulong *p = buf; 
					for(i=2; i<m/4; i++) 
						if(p[i] != i-2) 
							print("%d sb %d %lux %lux\n", p[i], i-2, p[i], &p[i]); 
				} 
1991/0303    
				error(Eio); 
			} 
1991/0306    
			if(!isflush) 
1991/0402    
			mp->abort = 0; 
			if(isflush) 
				u->khot.abort = 0;	/* flushed message's done too */ 
			else 
1991/0306    
				poperror(); 
1991/0212    
		}else{ 
			/* 
1991/0401/sys/src/9/power/devhotrod.c:347,3581991/0402/sys/src/9/power/devhotrod.c:358,370
1991/0303    
			if(mp->param[2] != hotsum((ulong*)hp->buf, m, mp->param[2])){ 
1991/0307    
				hp->addr->error++; 
1991/0303    
				print("hotrod cksum err is %lux sb %lux\n", 
					hotsum((ulong*)hp->buf, n, 1), mp->param[2]); 
1991/0402    
					hotsum((ulong*)hp->buf, m, 1), mp->param[2]); 
1991/0303    
				qunlock(&hp->buflock); 
1991/0307    
{int i; for(i=0; i<8; i++) print("%lux\n", ((ulong*)buf)[i]); } 
1991/0303    
				error(Eio); 
			} 
1991/0318    
			memmove(buf, hp->buf, m); 
1991/0402    
			mp->abort = 0; 
1991/0303    
			qunlock(&hp->buflock); 
1991/0212    
		} 
1991/0303    
		return m; 
1991/0401/sys/src/9/power/devhotrod.c:383,3881991/0402/sys/src/9/power/devhotrod.c:395,401
1991/0306    
			 * use supplied buffer, no need to lock for reply 
1991/0212    
			 */ 
1991/0306    
			mp = &((User*)(u->p->upage->pa|KZERO))->khot; 
1991/0402    
			mp->wtype = ((char*)buf)[0]; 
1991/0306    
			if(mp->abort)	/* use reserved flush msg */ 
				mp = &((User*)(u->p->upage->pa|KZERO))->fhot; 
1991/0212    
			qlock(hp); 
1991/0401/sys/src/9/power/devhotrod.c:397,4021991/0402/sys/src/9/power/devhotrod.c:410,416
1991/0306    
			 * use hotrod buffer.  lock the buffer until the reply 
1991/0212    
			 */ 
1991/0306    
			mp = &((User*)(u->p->upage->pa|KZERO))->uhot; 
1991/0402    
			mp->wtype = ((char*)buf)[0]; 
1991/0212    
			qlock(&hp->buflock); 
			qlock(hp); 
1991/0318    
			memmove(hp->buf, buf, n); 


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