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

1992/0320/port/stfcall.c (diff list | history)

1992/0319/sys/src/9/port/stfcall.c:109,1151992/0320/sys/src/9/port/stfcall.c:109,114 (short | long | prev | next)
1992/0318    
	for(bp = bl; bp->next; bp = bp->next) 
		; 
	bp->flags |= S_DELIM; 
1992/0319    
if(bl->rptr[0] == 73) print("fcall Rclunk %d\n", blen(bl)); 
1992/0318    
	PUTNEXT(q, bl); 
} 
 
1992/0319/sys/src/9/port/stfcall.c:131,1641992/0320/sys/src/9/port/stfcall.c:130,170
1992/0318    
	bp->flags &= ~S_DELIM; 
	putq(q, bp); 
1991/0521    
 
1992/0318    
	bp = q->first; 
	switch(bp->rptr[0]) {		/* This is the type */ 
	default: 
		len = msglen[bp->rptr[0]]; 
		if(len == 0) 
			error(Emountrpc); 
		if(q->len >= len) 
1992/0320    
	for(;;) { 
		bp = q->first; 
		if(bp == 0) 
			return; 
		switch(bp->rptr[0]) {		/* This is the type */ 
		default: 
			len = msglen[bp->rptr[0]]; 
			if(len == 0) 
				error(Emountrpc); 
			if(q->len < len) 
				return; 
	 
1992/0318    
			upstream(q, len); 
1992/0320    
			continue; 
1991/0521    
 
1992/0318    
		return; 
	case Twrite:			/* Fmt: TGGFFOOOOOOOOCC */ 
		len = Twritehdr;	/* T = type, G = tag, F = fid */ 
		off = Twritecnt;	/* O = offset, C = count */ 
1991/0521    
		break; 
1992/0318    
	case Rread:			/* Fmt: TGGFFCC */ 
		len = Rreadhdr; 
		off = Rreadcnt; 
		break; 
1991/0521    
	} 
1992/0320    
		case Twrite:			/* Fmt: TGGFFOOOOOOOOCC */ 
			len = Twritehdr;	/* T = type, G = tag, F = fid */ 
			off = Twritecnt;	/* O = offset, C = count */ 
			break; 
1991/0521    
 
1992/0318    
	if(q->len < len) 
		return; 
1991/0521    
                 
1992/0318    
	pullup(q->first, len); 
	bp = q->first; 
	need = len+bp->rptr[off]+(bp->rptr[off+1]<<8); 
	if(q->len < need) 
		return; 
                 
	upstream(q, need); 
1992/0320    
		case Rread:			/* Fmt: TGGFFCC */ 
			len = Rreadhdr; 
			off = Rreadcnt; 
			break; 
		} 
	 
		if(q->len < len) 
			return; 
	 
		pullup(q->first, len); 
		bp = q->first; 
		need = len+bp->rptr[off]+(bp->rptr[off+1]<<8); 
		if(q->len < need) 
			return; 
	 
		upstream(q, need); 
	} 
1991/0521    
} 


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