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

2003/0220/port/qio.c (diff list | history)

2002/1113/sys/src/9/port/qio.c:38,432003/0220/sys/src/9/port/qio.c:38,44 (short | long | prev | next)
1993/0908    
	int	eof;		/* number of eofs read by user */ 
1993/0530    
 
	void	(*kick)(void*);	/* restart output */ 
2003/0220    
	void	(*bypass)(void*, Block*);	/* bypass queue altogether */ 
1994/0321    
	void*	arg;		/* argument to kick */ 
1993/0530    
 
	QLock	rlock;		/* mutex for reading processes */ 
2002/1113/sys/src/9/port/qio.c:795,8012003/0220/sys/src/9/port/qio.c:796,801
1993/0526    
	if(q == 0) 
1993/0528    
		return 0; 
 
1998/0328    
	ilock(q); 
1994/0902    
	q->limit = q->inilim = limit; 
1993/0526    
	q->kick = kick; 
	q->arg = arg; 
2002/1113/sys/src/9/port/qio.c:804,8142003/0220/sys/src/9/port/qio.c:804,831
1993/0601    
	q->state |= Qstarve; 
1993/0908    
	q->eof = 0; 
1998/0703    
	q->noblock = 0; 
1998/0328    
	iunlock(q); 
1993/0526    
 
	return q; 
} 
 
2003/0220    
/* open a queue to be bypassed */ 
Queue* 
qbypass(void (*bypass)(void*, Block*), void *arg) 
{ 
	Queue *q; 
 
	q = malloc(sizeof(Queue)); 
	if(q == 0) 
		return 0; 
 
	q->limit = 0; 
	q->arg = arg; 
	q->bypass = bypass; 
	q->state = 0; 
 
	return q; 
} 
 
1993/0526    
static int 
1993/0528    
notempty(void *a) 
1993/0526    
{ 
2002/1113/sys/src/9/port/qio.c:1143,11502003/0220/sys/src/9/port/qio.c:1160,1173
1995/0714    
	int n, dowakeup; 
2001/0207    
	Proc *p; 
1993/0526    
 
1994/0208    
	dowakeup = 0; 
1995/0714    
	n = BLEN(b); 
2003/0220    
 
	if(q->bypass){ 
		(*q->bypass)(q->arg, b); 
		return n; 
	} 
 
	dowakeup = 0; 
1998/0328    
	qlock(&q->wlock); 
1994/0208    
	if(waserror()){ 
2000/0913    
		if(b != nil) 


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