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

1992/0627/port/stlapd.c (diff list | history)

1992/0622/sys/src/9/port/stlapd.c:75,801992/0627/sys/src/9/port/stlapd.c:75,81 (short | long | prev | next)
1992/0622    
{ 
1992/0609    
	QLock;		/* access, state change */ 
	Rendez;		/* waiting for state change */ 
1992/0627    
	int	klocked;/* locked by kernel proc */ 
1992/0609    
	int	state; 
	int	flags; 
	Queue *	rq; 
1992/0622/sys/src/9/port/stlapd.c:723,7341992/0627/sys/src/9/port/stlapd.c:724,737
1992/0609    
lapdkproc(void *arg) 
{ 
	Lapd *lp = (Lapd *)arg; 
	int locked = 0; 
1992/0627    
 
	lp->klocked = 0; 
1992/0609    
	lp->kstarted = 1; 
 
	if(waserror()){ 
		if (locked) 
1992/0627    
		if(lp->klocked) 
1992/0609    
			qunlock(lp); 
1992/0627    
		lp->klocked = 0; 
1992/0609    
		print("lapdkproc %d error\n", lp-lapd); 
		lp->kstarted = 0; 
		wakeup(lp); 
1992/0622/sys/src/9/port/stlapd.c:739,7501992/0627/sys/src/9/port/stlapd.c:742,751
1992/0609    
		if(!lp->t200 || NOW < lp->t200) 
			continue; 
		qlock(lp); 
		locked = 1; 
		USED(locked); 
1992/0627    
		lp->klocked = 1; 
1992/0609    
		if(lp->flags & Hungup){ 
			qunlock(lp); 
			locked = 0; 
			USED(locked); 
1992/0627    
			lp->klocked = 0; 
1992/0609    
			break; 
		} 
		switch(lp->state){ 
1992/0622/sys/src/9/port/stlapd.c:762,7691992/0627/sys/src/9/port/stlapd.c:763,769
1992/0609    
			break; 
		} 
		qunlock(lp); 
		locked = 0; 
		USED(locked); 
1992/0627    
		lp->klocked = 0; 
1992/0609    
	} 
	lp->kstarted = 0; 
	wakeup(lp); 


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