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

1991/0717/port/proc.c (diff list | history)

1991/0712/sys/src/9/port/proc.c:67,731991/0717/sys/src/9/port/proc.c:67,73 (short | long | prev | next)
Comment fixes. Avoid race in putseg cleanup (BUG FIX?)?
rsc Mon Mar 20 17:14:13 2006
1990/0227    
			p->pid = 0; 
1991/0507    
			mmurelease(p); 
1991/0705    
			/*  
			 * Holding locks: 
1991/0717    
			 * Holding locks from pexit: 
1991/0705    
			 * 	procalloc, debug, palloc 
			 */ 
			pg = p->upage; 
1991/0712/sys/src/9/port/proc.c:473,4791991/0717/sys/src/9/port/proc.c:473,479
1990/1101    
} 
 
void 
1990/0227    
pexit(char *s, int freemem) 
1991/0717    
pexit(char *exitstr, int freemem) 
1990/0227    
{ 
	ulong mypid; 
1990/03081    
	Proc *p, *c, *k, *l; 
1991/0712/sys/src/9/port/proc.c:481,4891991/0717/sys/src/9/port/proc.c:481,490
1990/03081    
	Chan *ch; 
1991/0110    
	char msg[ERRLEN]; 
1990/0227    
	ulong *up, *ucp, *wp; 
1991/0717    
	Segment **s, **es, *os; 
1990/0227    
 
1991/0705    
	if(s) 	/* squirrel away; we'll lose our address space */ 
1991/0110    
		strcpy(msg, s); 
1991/0717    
	if(exitstr) 			/* squirrel away before we lose our address space */ 
		strcpy(msg, exitstr); 
1991/0110    
	else 
		msg[0] = 0; 
1991/0705    
	 
1991/0712/sys/src/9/port/proc.c:496,5041991/0717/sys/src/9/port/proc.c:497,508
1991/0517    
 
1990/0227    
	if(freemem){ 
1991/0705    
		flushvirt(); 
		for(i = 0; i < NSEG; i++) 
			if(c->seg[i]) 
				putseg(c->seg[i]); 
1991/0717    
		es = &c->seg[NSEG]; 
		for(s = c->seg; s < es; s++) 
			if(os = *s) { 
				*s = 0; 
				putseg(os); 
			} 
1990/03081    
		closepgrp(c->pgrp); 
1991/0712    
		if(c->egrp) 
			closeegrp(c->egrp); 
1991/0712/sys/src/9/port/proc.c:552,5601991/0717/sys/src/9/port/proc.c:556,567
1990/0227    
	if(!freemem){ 
1990/1101    
		addbroken(c); 
1991/0705    
		flushvirt(); 
		for(i = 0; i < NSEG; i++) 
			if(c->seg[i]) 
				putseg(c->seg[i]); 
1991/0717    
		es = &c->seg[NSEG]; 
		for(s = c->seg; s < es; s++) 
			if(os = *s) { 
				*s = 0; 
				putseg(os); 
			} 
1990/03081    
		closepgrp(c->pgrp); 
1991/0705    
		closeegrp(c->egrp); 
1990/0227    
		close(u->dot); 


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