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

1990/1212/port/page.c (diff list | history)

1990/1211/sys/src/9/port/page.c:55,611990/1212/sys/src/9/port/page.c:55,61 (short | long | prev | next)
1990/0227    
{ 
	ulong p; 
 
	if(palloc.active) 
1990/1212    
	if(palloc.active && n!=0) 
1990/0227    
		print("ialloc bad\n"); 
	if(palloc.addr == 0) 
		palloc.addr = ((ulong)&end)&~KZERO; 
1990/1211/sys/src/9/port/page.c:185,1911990/1212/sys/src/9/port/page.c:185,191
1990/0227    
					continue; 
				} 
				print("free %d pages va %lux %lux %c\n", o1->npage, o->va, o1->qid, devchar[o1->type]); 
				freepage(o1); 
1990/1212    
				freepage(o1, 0); 
1990/0227    
				/* neworig will free the orig and pte's later */ 
				unlock(o1); 
				if(p->ref == 0) 
1990/1211/sys/src/9/port/page.c:367,3731990/1212/sys/src/9/port/page.c:367,373
1990/0227    
				unlock(o); 
				continue; 
			} 
			freepage(o); 
1990/1212    
			freepage(o, 1); 
1990/0227    
			freepte(o); 
			unlock(o); 
			o->next = origalloc.free; 
1990/1211/sys/src/9/port/page.c:506,5121990/1212/sys/src/9/port/page.c:506,512
1990/0227    
				close(c); 
			} 
			if(!(o->flag&OCACHED) || o->npage==0){ 
				freepage(o); 
1990/1212    
				freepage(o, 1); 
1990/0227    
				freepte(o); 
				unlock(o); 
				lock(&origalloc); 
1990/1211/sys/src/9/port/page.c:566,5721990/1212/sys/src/9/port/page.c:566,572
1990/0227    
 * o is locked 
 */ 
void 
freepage(Orig *o) 
1990/1212    
freepage(Orig *o, int dolock) 
1990/0227    
{ 
	PTE *pte; 
	Page *pg; 
1990/1211/sys/src/9/port/page.c:576,5821990/1212/sys/src/9/port/page.c:576,582
1990/0227    
	for(i=0; i<o->npte; i++,pte++) 
		if(pg = pte->page){	/* assign = */ 
			if(pg->ref == 1){ 
1990/0801    
				unusepage(pg, 1); 
1990/1212    
				unusepage(pg, dolock); 
1990/0227    
				pte->page = 0; 
				pg->o = 0; 
			} 


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