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

1990/1018/port/devdk.c (diff list | history)

1990/1018/sys/src/9/port/devdk.c:206,2111990/1022/sys/src/9/port/devdk.c:206,212 (short | long | prev | next)
1990/0312    
dkmuxopen(Queue *q, Stream *s) 
{ 
	Dk *dp; 
1990/1022    
	Line *lp; 
1990/0312    
	int i; 
 
	for(dp = dk; dp < &dk[Ndk]; dp++){ 
1990/1018/sys/src/9/port/devdk.c:222,2271990/1022/sys/src/9/port/devdk.c:223,231
1990/0312    
			dp->lines = 16; 
			dp->name[0] = 0; 
			dp->wq = WR(q); 
1990/1022    
			for(lp = dp->line; lp < &dp->line[Nline]; lp++) 
				if(lp->state != 0) 
					panic("dkmuxopen l %d s %lux", lp-dp->line, lp->state); 
1990/0312    
			qunlock(dp); 
			return; 
		} 
1990/1018/sys/src/9/port/devdk.c:1368,13821990/1022/sys/src/9/port/devdk.c:1372,1386
1990/0312    
{ 
	Line *lp; 
 
	if (line <= 0 || line >= dp->lines) { 
		/* tell controller this line is not in use */ 
		dkmesg(dp, T_CHG, D_CLOSE, line, 0); 
		return; 
	} 
	lp = &dp->line[line]; 
	switch (dialp->srv) { 
 
	case D_CLOSE:		/* remote shutdown */ 
1990/1022    
		if (line <= 0 || line >= dp->lines) { 
			/* tell controller this line is not in use */ 
			dkmesg(dp, T_CHG, D_CLOSE, line, 0); 
			return; 
		} 
		lp = &dp->line[line]; 
1990/0312    
		switch (lp->state) { 
 
		case Ldialing: 
1990/1018/sys/src/9/port/devdk.c:1407,14121990/1022/sys/src/9/port/devdk.c:1411,1422
1990/0312    
		break; 
	 
	case D_ISCLOSED:	/* acknowledging a local shutdown */ 
1990/1022    
		if (line <= 0 || line >= dp->lines) { 
			/* tell controller this line is not in use */ 
			dkmesg(dp, T_CHG, D_CLOSE, line, 0); 
			return; 
		} 
		lp = &dp->line[line]; 
1990/0312    
		switch (lp->state) { 
		case Llclose: 
		case Lclosed: 
1990/1018/sys/src/9/port/devdk.c:1421,14261990/1022/sys/src/9/port/devdk.c:1431,1466
1990/0312    
		} 
		break; 
 
1990/1022    
	case D_CLOSEALL: 
		for(line = dp->ncsc+1; line < dp->lines; line++){ 
			lp = &dp->line[line]; 
			switch (lp->state) { 
	 
			case Ldialing: 
				/* simulate a failed connection */ 
				dkreplymesg(dp, (Dkmsg *)0, line); 
				lp->state = Lrclose; 
				break; 
	 
			case Lrclose: 
			case Lconnected: 
			case Llistening: 
			case Lackwait: 
				dkhangup(lp); 
				lp->state = Lrclose; 
				break; 
	 
			case Lopened: 
				break; 
	 
			case Llclose: 
			case Lclosed: 
				lp->state = Lclosed; 
				break; 
			} 
		} 
		break; 
 
1990/0312    
	default: 
		print("unrecognized T_CHG\n"); 
	} 
1990/1018/sys/src/9/port/devdk.c:1503,15091990/1022/sys/src/9/port/devdk.c:1543,1549
1990/0312    
			 *  remind controller of dead lines and 
			 *  timeout calls that take to long 
			 */ 
			for (i=0; i<dp->lines; i++){ 
1990/1022    
			for (i=dp->ncsc+1; i<dp->lines; i++){ 
1990/0312    
				lp = &dp->line[i]; 
				switch(lp->state){ 
				case Llclose: 


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