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

1990/1126/port/devmnt.c (diff list | history)

1990/1126/sys/src/9/port/devmnt.c:669,6831990/1127/sys/src/9/port/devmnt.c:669,684 (short | long | prev | next)
1990/0227    
mntxmit(Mnt *m, Mnthdr *mh) 
{ 
	ulong n; 
1990/1123    
	Mntbuf *mbw, *t; 
1990/1127    
	Mntbuf *mbw; 
1990/0604    
	Mnthdr *w, *ow; 
	MntQ *q; 
1990/1124    
	int qlocked, tag, written; 
1990/0227    
 
1990/0619    
	mh->mbr = mballoc(); 
1990/1127    
	mh->mbr = 0; 
1990/0227    
	mbw = mballoc(); 
1990/1124    
	if(waserror()){			/* 1 */ 
1990/0619    
		mbfree(mh->mbr); 
1990/1127    
		if(mh->mbr) 
			mbfree(mh->mbr); 
1990/0227    
		mbfree(mbw); 
		nexterror(); 
	} 
1990/1126/sys/src/9/port/devmnt.c:706,7111990/1127/sys/src/9/port/devmnt.c:707,713
1990/0227    
	/* 
	 * Read response 
	 */ 
1990/1127    
	mh->mbr = mballoc(); 
1990/0619    
	n = (*devtab[q->msg->type].read)(q->msg, mh->mbr->buf, BUFSIZE); 
1990/0604    
	mqfree(q); 
1990/1124    
	poperror();		/* 2 */ 
1990/1126/sys/src/9/port/devmnt.c:772,7771990/1127/sys/src/9/port/devmnt.c:774,780
1990/1124    
			mnterrdequeue(m, mh); 
1990/0703    
			nexterror(); 
		} 
1990/1127    
		mh->mbr = mballoc(); 
1990/0619    
		n = (*devtab[q->msg->type].read)(q->msg, mh->mbr->buf, BUFSIZE); 
1990/1124    
		poperror();		/* 3 */ 
1990/0619    
		if(convM2S(mh->mbr->buf, &mh->rhdr, n) == 0){ 
1990/1126/sys/src/9/port/devmnt.c:808,8161990/1127/sys/src/9/port/devmnt.c:811,818
1990/1123    
		w = &mnthdralloc.arena[tag]; 
1990/1124    
		if(w->flushing || !w->active)	/* nothing to do; mntflush will clean up */ 
1990/1123    
			goto Read; 
		t = mh->mbr; 
		mh->mbr = w->mbr; 
		w->mbr = t; 
1990/1127    
		w->mbr = mh->mbr; 
		mh->mbr = 0; 
1990/1123    
		memcpy(&w->rhdr, &mh->rhdr, sizeof mh->rhdr); 
		mntwunlink(q, w); 
		w->readreply = 1; 


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