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

1992/0628/port/swap.c (diff list | history)

1992/0625/sys/src/9/port/swap.c:37,631992/0628/sys/src/9/port/swap.c:37,50 (short | long | prev | next)
1991/0705    
newswap(void) 
{ 
	char *look; 
	int n; 
 
	lock(&swapalloc); 
	if(swapalloc.free == 0) 
		panic("out of swap space"); 
 
	n = swapalloc.top - swapalloc.alloc; 
	look = swapalloc.alloc; 
	while(n && *look) { 
		n--; 
		look++; 
	} 
	if(n == 0) { 
		look = swapalloc.swmap; 
		while(*look) 
			look++; 
	} 
	if(look == swapalloc.top) 
		swapalloc.alloc = swapalloc.swmap; 
	else 
		swapalloc.alloc = look+1; 
1992/0628    
	look = memchr(swapalloc.swmap, 0, conf.nswap); 
	if(look == 0) 
		panic("inconsistant swap"); 
1991/0705    
 
	*look = 1; 
1991/0928    
	swapalloc.free--; 
1992/0625/sys/src/9/port/swap.c:116,1221992/0628/sys/src/9/port/swap.c:103,109
1992/0301    
 
1992/0303    
	for(;;) { 
		p++; 
		if(p > ep) 
1992/0628    
		if(p >= ep) 
1992/0303    
			p = proctab(0); 
1991/0705    
 
1992/0303    
		if(p->state == Dead || p->kp) 
1992/0625/sys/src/9/port/swap.c:126,1311992/0628/sys/src/9/port/swap.c:113,119
1992/0303    
			for(i = 0; i < NSEG; i++) { 
				if(!needpages(junk)) 
					goto loop; 
1992/0628    
 
1992/0303    
				if(s = p->seg[i]) { 
1992/0304    
					type = s->type&SG_TYPE; 
					switch(type) { 
1992/0625/sys/src/9/port/swap.c:264,2811992/0628/sys/src/9/port/swap.c:252,269
1991/0705    
	case SG_STACK: 
	case SG_SHARED: 
1992/0307    
	case SG_SHDATA: 
1992/0628    
		daddr = newswap(); 
 
1992/0625    
		lock(outp); 
1991/0705    
		outp->ref++; 
		uncachepage(outp); 
1992/0625    
		unlock(outp); 
1991/0705    
 
		daddr = newswap(); 
		outp->daddr = daddr; 
                 
		/* Enter swap page into cache before segment is unlocked so that 
		 * a fault will cause a cache recovery rather than a pagein on a 
		 * partially written block. 
		 */ 
1992/0628    
		outp->daddr = daddr; 
1991/0705    
		cachepage(outp, &swapimage); 
		*pg = (Page*)(daddr|PG_ONSWAP); 
 


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