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

1990/0717/port/sturp.c (diff list | history)

1990/0707/sys/src/9/port/sturp.c:7,131990/0717/sys/src/9/port/sturp.c:7,12 (short | long | prev | next)
1990/0312    
#include	"errno.h" 
1990/0227    
 
enum { 
	Nurp=		32, 
	MSrexmit=	1000, 
1990/0312    
	Nmask=		0x7, 
1990/0227    
}; 
1990/0707/sys/src/9/port/sturp.c:97,1031990/0717/sys/src/9/port/sturp.c:96,102
1990/0312    
#define	OPEN		0x8 
#define CLOSING		0x10 
1990/0227    
 
Urp	urp[Nurp]; 
1990/0717    
Urp	*urp; 
1990/0227    
 
/* 
 *  predeclared 
1990/0707/sys/src/9/port/sturp.c:121,1261990/0717/sys/src/9/port/sturp.c:120,132
1990/0227    
 
1990/0312    
Qinfo urpinfo = { urpciput, urpoput, urpopen, urpclose, "urp" }; 
1990/0227    
 
1990/0717    
void 
urpreset(void) 
{ 
	newqinfo(&urpinfo); 
	urp = (Urp *)ialloc(conf.nurp*sizeof(Urp), 0); 
} 
 
1990/0312    
static void 
1990/0227    
urpopen(Queue *q, Stream *s) 
{ 
1990/0707/sys/src/9/port/sturp.c:131,1441990/0717/sys/src/9/port/sturp.c:137,153
1990/0227    
	/* 
	 *  find a free urp structure 
	 */ 
	for(up = urp; up < &urp[Nurp]; up++){ 
1990/0717    
	for(up = urp; up < &urp[conf.nurp]; up++){ 
1990/0227    
		qlock(up); 
		if(up->state == 0) 
			break; 
		qunlock(up); 
	} 
	if(up == &urp[Nurp]) 
1990/0717    
	if(up == &urp[conf.nurp]){ 
		q->ptr = 0; 
		WR(q)->ptr = 0; 
1990/0227    
		error(0, Egreg); 
1990/0717    
	} 
1990/0227    
 
1990/0312    
	q->ptr = q->other->ptr = up; 
1990/0227    
	up->rq = q; 
1990/0707/sys/src/9/port/sturp.c:177,1821990/0717/sys/src/9/port/sturp.c:186,193
1990/0227    
	int i; 
 
	up = (Urp *)q->ptr; 
1990/0717    
	if(up == 0) 
		return; 
1990/0227    
 
	/* 
1990/0312    
	 *  wait for all outstanding messages to drain, tell kernel 
1990/0707/sys/src/9/port/sturp.c:967,9731990/0717/sys/src/9/port/sturp.c:978,984
1990/0629    
{ 
	Urp *up; 
 
	for(up = urp; up < &urp[Nurp]; up++) 
1990/0717    
	for(up = urp; up < &urp[conf.nurp]; up++) 
1990/0629    
		if(up->rq) 
			urpvomit("", up); 
1990/0227    
} 
rm: /tmp/sd.85068.*: No such file or directory 


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