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

1990/0509/port/proc.c (diff list | history)

1990/0424/sys/src/9/port/proc.c:410,4171990/0509/sys/src/9/port/proc.c:410,444 (short | long | prev | next)
Keep at most NBROKEN Broken processes around.
rsc Mon Mar 20 17:14:02 2006
1990/0227    
	} 
   out: 
	if(!freemem){ 
1990/0509    
		/* 
		 * weird thing: keep at most NBROKEN around 
		 */ 
		#define	NBROKEN 4 
		static struct{ 
			Lock; 
			int	n; 
			Proc	*p[NBROKEN]; 
		}broken; 
		int b; 
 
		lock(&broken); 
		if(broken.n == NBROKEN){ 
			ready(broken.p[0]); 
			memcpy(&broken.p[0], &broken.p[1], sizeof(Proc*)*(NBROKEN-1)); 
			--broken.n; 
		} 
		broken.p[broken.n++] = c; 
		unlock(&broken); 
1990/03081    
		c->state = Broken; 
1990/0227    
		sched();		/* until someone lets us go */ 
1990/0509    
		lock(&broken); 
		for(b=0; b<NBROKEN; b++) 
			if(broken.p[b] == c){ 
				broken.n--; 
				memcpy(&broken.p[b], &broken.p[b+1], sizeof(Proc*)*(NBROKEN-(b+1))); 
				break; 
			} 
		unlock(&broken); 
1990/0227    
		freesegs(-1); 
1990/03081    
		closepgrp(c->pgrp); 
1990/0227    
		close(u->dot); 


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