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

1992/0519/port/proc.c (diff list | history)

1992/0428/sys/src/9/port/proc.c:297,3021992/0519/sys/src/9/port/proc.c:297,303 (short | long | prev | next)
Add splhi calls to sleep, tsleep around checks of r->p. (BUG FIX?)
rsc Mon Mar 20 17:14:24 2006
1990/0227    
sleep(Rendez *r, int (*f)(void*), void *arg) 
{ 
1991/0727    
	Proc *p; 
1992/0519    
	int s; 
1991/0727    
 
	p = u->p; 
1990/0227    
	sleep1(r, f, arg); 
1992/0428/sys/src/9/port/proc.c:304,3131992/0519/sys/src/9/port/proc.c:305,316
1991/0727    
		sched();	/* notepending may go true while asleep */ 
	if(p->notepending){ 
		p->notepending = 0; 
1992/0519    
		s = splhi(); 
1991/0805    
		lock(r); 
		if(r->p == p) 
			r->p = 0; 
		unlock(r); 
1992/0519    
		splx(s); 
1990/11211    
		error(Eintr); 
1990/0227    
	} 
} 
1992/0428/sys/src/9/port/proc.c:317,3221992/0519/sys/src/9/port/proc.c:320,326
1990/0227    
{ 
	Alarm *a; 
1991/0727    
	Proc *p; 
1992/0519    
	int s; 
1990/0227    
 
1991/0727    
	p = u->p; 
1990/0227    
	sleep1(r, f, arg); 
1992/0428/sys/src/9/port/proc.c:327,3361992/0519/sys/src/9/port/proc.c:331,342
1991/0727    
	} 
	if(p->notepending){ 
		p->notepending = 0; 
1992/0519    
		s = splhi(); 
1991/0805    
		lock(r); 
		if(r->p == p) 
			r->p = 0; 
		unlock(r); 
1992/0519    
		splx(s); 
1990/11211    
		error(Eintr); 
1990/0227    
	} 
} 


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