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

1992/0314/port/segment.c (diff list | history)

1992/0310/sys/src/9/port/segment.c:95,1011992/0314/sys/src/9/port/segment.c:95,103 (short | long | prev | next)
1991/0726    
		return; 
 
	i = s->image; 
	if(i && i->s == s && s->ref == 1){ 
1992/0314    
	if(i) 
	if(i->s == s) 
	if(s->ref == 1) { 
1991/0726    
		lock(i); 
		if(s->ref == 1) 
			i->s = 0; 
1992/0310/sys/src/9/port/segment.c:166,1711992/0314/sys/src/9/port/segment.c:168,174
1991/0705    
		n->image = s->image; 
		n->fstart = s->fstart; 
		n->flen = s->flen; 
1992/0314    
 
1991/0705    
	copypte: 
		for(i = 0; i < SEGMAPSIZE; i++) 
			if(pte = s->map[i]) 
1992/0310/sys/src/9/port/segment.c:272,3011992/0314/sys/src/9/port/segment.c:275,294
1991/0706    
	if(!canqlock(&ireclaim))	/* Somebody is already cleaning the page cache */ 
		return; 
 
1992/0310    
	if(conf.cntrlp) 
	print("ireclaim %lud\n", TK2MS(MACHP(0)->ticks)); 
                 
1991/1024    
	for(;;) { 
		lock(&palloc); 
		for(p = palloc.head; p; p = p->next) 
1992/0314    
		for(p = palloc.head; p; p = p->next) { 
1992/0225    
			if(p->image) 
			if(p->ref == 0) 
			if(p->image != &swapimage) 
1991/1024    
				break; 
1991/0706    
                 
1992/0314    
			if(p->image != &swapimage) { 
				lockpage(p); 
				if(p->ref == 0) 
					uncachepage(p); 
				unlockpage(p); 
			} 
		} 
1991/0706    
		unlock(&palloc); 
1991/1024    
		if(p == 0) 
			break; 
                 
1991/0706    
		lockpage(p); 
1992/0225    
		if(p->ref == 0) 
1991/0706    
			uncachepage(p); 
		unlockpage(p); 
	} 
1992/0310    
                 
	if(conf.cntrlp) 
	print("ireclaim done %lud\n", TK2MS(MACHP(0)->ticks)); 
1991/0706    
                 
	qunlock(&ireclaim); 
} 
 


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