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

1993/0910/port/swap.c (diff list | history)

1993/0501/sys/src/9/port/swap.c:109,1151993/0910/sys/src/9/port/swap.c:109,115 (short | long | prev | next)
1993/0501    
	up->psstate = "Idle"; 
1992/0303    
	sleep(&swapalloc.r, needpages, 0); 
1992/0301    
 
1992/0303    
	for(;;) { 
1993/0910    
	while(needpages(junk)) { 
1992/0303    
		p++; 
1992/0628    
		if(p >= ep) 
1992/0303    
			p = proctab(0); 
1993/0501/sys/src/9/port/swap.c:142,1511993/0910/sys/src/9/port/swap.c:142,149
1992/0304    
					} 
1992/0303    
				} 
1991/0705    
			} 
1992/0805    
			continue; 
1991/0705    
		} 
1992/0805    
                 
1992/0303    
		if(palloc.freecount < swapalloc.highwater) { 
1993/0910    
		else { 
1992/0725    
			if(!cpuserver) 
				freebroken();	/* can use the memory */ 
1991/0705    
 
1993/0501/sys/src/9/port/swap.c:152,1581993/0910/sys/src/9/port/swap.c:150,157
1992/0303    
			/* Emulate the old system if no swap channel */ 
			print("no physical memory\n"); 
			tsleep(&swapalloc.r, return0, 0, 1000); 
			wakeup(&palloc.r); 
1993/0910    
			for(i = 0; i < NCOLOR; i++) 
				wakeup(&palloc.r[i]); 
1992/0303    
		} 
1991/0705    
	} 
1992/0303    
	goto loop; 
1993/0501/sys/src/9/port/swap.c:211,2171993/0910/sys/src/9/port/swap.c:210,215
1991/0705    
	poperror(); 
	qunlock(&s->lk); 
	putseg(s); 
	wakeup(&palloc.r); 
} 
 
int 
1993/0501/sys/src/9/port/swap.c:322,3291993/0910/sys/src/9/port/swap.c:320,332
1991/0705    
int 
needpages(void *p) 
{ 
1993/0910    
	int i; 
 
1991/1115    
	USED(p); 
1992/0303    
	return palloc.freecount < swapalloc.headroom; 
1993/0910    
	for(i = 0; i < NCOLOR; i++) 
		if(palloc.freecol[i] < swapalloc.headroom/NCOLOR) 
			return 1; 
	return 0; 
1991/0705    
} 
 
void 


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