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

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

1990/1115/sys/src/9/port/page.c:294,3041990/11211/sys/src/9/port/page.c:294,304 (short | long | prev | next)
1990/0227    
	ulong i; 
 
	for(o=origalloc.arena,i=0; i<conf.norig; i++,o++) 
		if(o->npage && o->qid==c->qid && o->va==va){ 
1990/11211    
		if(o->npage && o->qid.path==c->qid.path && o->va==va){ 
1990/0227    
			lock(o); 
			if(o->npage && o->qid==c->qid) 
1990/11211    
			if(o->npage && eqqid(o->qid, c->qid)) 
1990/0227    
			if(o->va==va && o->npte==npte && o->flag==flag) 
1990/0303    
			if(o->mchan==c->mchan && o->mqid==c->mqid && o->type==c->type){ 
1990/11211    
			if(o->mchan==c->mchan && o->type==c->type && eqqid(o->mqid, c->mqid)){ 
1990/0227    
				if(o->chan == 0){ 
					o->chan = c; 
					incref(c); 
1990/1115/sys/src/9/port/page.c:329,3351990/11211/sys/src/9/port/page.c:329,334
1990/0227    
		o->nproc = 1; 
		o->npage = 0; 
		o->chan = c; 
1990/0312    
o->nmod = 0; 
1990/0227    
		if(c){ 
			o->type = c->type; 
			o->qid = c->qid; 
1990/1115/sys/src/9/port/page.c:338,3451990/11211/sys/src/9/port/page.c:337,344
1990/0227    
			incref(c); 
		}else{ 
			o->type = -1; 
			o->qid = -1; 
1990/0303    
			o->mqid = -1; 
1990/11211    
			o->qid = (Qid){~0, ~0}; 
			o->mqid = (Qid){~0, ~0}; 
1990/0303    
			o->mchan = 0; 
1990/0227    
		} 
1990/0802    
		if(u && u->p && waserror()){ 
1990/1115/sys/src/9/port/page.c:401,4081990/11211/sys/src/9/port/page.c:400,405
1990/0227    
	} 
	unlock(&modalloc); 
	print("no mods\n"); 
1990/0312    
DEBUG(); 
1990/1013    
panic("mods %lux %d %d", o->va, o->npte, o->nmod); 
1990/0227    
	if(u == 0) 
		panic("newmod"); 
	u->p->state = Wakeme; 
1990/1115/sys/src/9/port/page.c:429,4351990/11211/sys/src/9/port/page.c:426,431
1990/0227    
if(pte->page==0) panic("forkmod zero page"); 
if(pte->proc != u->p) panic("forkmod wrong page"); 
1990/1013    
		npte = newmod(o); 
1990/0312    
o->nmod++; 
1990/0227    
		npte->proc = p; 
		npte->page = pte->page; 
		pte->page->ref++; 
1990/1115/sys/src/9/port/page.c:490,4961990/11211/sys/src/9/port/page.c:486,491
1990/0227    
				} 
				pg->ref--; 
				o->npage--; 
1990/0312    
o->nmod--; 
1990/0227    
				old = (PTEA*)pte; 
				pte = pte->nextva; 
				lock(&modalloc); 
1990/1115/sys/src/9/port/page.c:653,6591990/11211/sys/src/9/port/page.c:648,654
1990/0802    
	unlock(&ptealloc); 
1990/0814    
	unlock(o); 
1990/0802    
	if(u && u->p) 
		error(0, Enovmem); 
1990/11211    
		error(Enovmem); 
1990/0802    
	panic("growpte fails %d %lux %d\n", n, o->va, o->npte); 
1990/0227    
} 
 


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