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

2001/0127/port/qio.c (diff list | history)

2000/0914/sys/src/9/port/qio.c:55,602001/0127/sys/src/9/port/qio.c:55,61 (short | long | prev | next)
1994/0507    
	Qmsg		= (1<<1),	/* message stream */ 
	Qclosed		= (1<<2), 
	Qflow		= (1<<3), 
2001/0127    
	Qcoalesce	= (1<<4),	/* coallesce packets on read */ 
1997/0925    
 
1999/0219    
	Maxatomic	= 32*1024, 
1993/0530    
}; 
2000/0914/sys/src/9/port/qio.c:749,7552001/0127/sys/src/9/port/qio.c:750,761
1994/0902    
	q->limit = q->inilim = limit; 
1993/0526    
	q->kick = kick; 
	q->arg = arg; 
1993/0530    
	q->state = msg ? Qmsg : 0; 
2001/0127    
	q->state = 0; 
	if(msg > 0) 
		q->state |= Qmsg; 
	else if(msg < 0) 
		q->state |= Qcoalesce; 
	 
1993/0601    
	q->state |= Qstarve; 
1993/0908    
	q->eof = 0; 
1998/0703    
	q->noblock = 0; 
2000/0914/sys/src/9/port/qio.c:865,8792001/0127/sys/src/9/port/qio.c:871,904
1995/0714    
qread(Queue *q, void *vp, int len) 
{ 
	Block *b; 
2001/0127    
	int m; 
	uchar *p; 
	uchar *e; 
1995/0714    
 
	b = qbread(q, len); 
	if(b == 0) 
		return 0; 
2001/0127    
	p = vp; 
1995/0714    
 
	len = BLEN(b); 
	memmove(vp, b->rp, len); 
	freeb(b); 
	return len; 
2001/0127    
	if((q->state & Qcoalesce) == 0){ 
		b = qbread(q, len); 
		if(b == 0) 
			return 0; 
 
		m = BLEN(b); 
		memmove(p, b->rp, m); 
		freeb(b); 
		return m; 
	} 
 
	for(e = p + len; p < e; p += m){ 
		b = qbread(q, e-p); 
		if(b == 0) 
			return 0; 
 
		m = BLEN(b); 
		memmove(p, b->rp, m); 
		freeb(b); 
	} 
 
	return p-(uchar*)vp; 
1995/0714    
} 
 
1993/0528    
static int 


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