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

1991/0102/port/devnonet.c (diff list | history)

1990/1231/sys/src/9/port/devnonet.c:37,431991/0102/sys/src/9/port/devnonet.c:37,42 (short | long | prev | next)
1990/1210    
static void	sendmsg(Noconv*, Nomsg*); 
static void	startconv(Noconv*, int, char*, int); 
static void	queueack(Noconv*, int); 
1990/1231    
static void	sendack(Noconv*, int); 
1990/1210    
 
static void	nonetiput(Queue*, Block*); 
static void	nonetoput(Queue*, Block*); 
1990/1231/sys/src/9/port/devnonet.c:921,9271991/0102/sys/src/9/port/devnonet.c:920,926
1990/1210    
	wq = ifc->wq->next; 
 
	/* 
	 *  one transmitter at a time 
1991/0102    
	 *  one transmitter at a time for this connection 
1990/1210    
	 */ 
	qlock(&cp->xlock); 
 
1990/1231/sys/src/9/port/devnonet.c:1005,10351991/0102/sys/src/9/port/devnonet.c:1004,1023
1990/1210    
static void 
sendctlmsg(Noconv *cp, int flag, int new) 
{ 
	cp->ctl.len = 0; 
	cp->ctl.first = 0; 
	cp->ctl.acked = 0; 
1991/0102    
	Nomsg ctl; 
 
	ctl.len = 0; 
	ctl.first = 0; 
	ctl.acked = 0; 
1990/1210    
	if(new) 
		cp->ctl.mid = Nnomsg^cp->out[cp->next].mid; 
1991/0102    
		ctl.mid = Nnomsg^cp->out[cp->next].mid; 
1990/1210    
	else 
		cp->ctl.mid = cp->lastacked; 
1991/0102    
		ctl.mid = cp->lastacked; 
1990/1210    
	cp->hdr->flag |= flag; 
	sendmsg(cp, &cp->ctl); 
1991/0102    
	sendmsg(cp, &ctl); 
1990/1210    
} 
 
/* 
1990/1231    
 *  send an acknowledgement 
 */ 
static void 
sendack(Noconv *cp, int ack) 
{ 
	cp->ackmsg.len = 0; 
	cp->ackmsg.first = 0; 
	cp->ackmsg.acked = ack; 
	cp->ackmsg.mid = cp->lastacked; 
	sendmsg(cp, &cp->ctl); 
} 
                 
/* 
1990/1210    
 *  receive a message (called by the multiplexor; noetheriput, nofddiiput, ...) 
 */ 
void 
1990/1231/sys/src/9/port/devnonet.c:1074,10811991/0102/sys/src/9/port/devnonet.c:1062,1071
1990/1210    
			if(f & NO_HANGUP) 
				hangup(cp); 
		} else { 
			if(r>0) 
1990/1231    
				sendack(cp, h->mid); 
1991/0102    
			if(r>0){ 
				queueack(cp, h->mid); 
				sendctlmsg(cp, 0, 0); 
			} 
1990/1210    
			cp->bad++; 
		} 
		freeb(bp); 


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