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

1997/1105/port/qio.c (diff list | history)

1997/1104/sys/src/9/port/qio.c:21,271997/1105/sys/src/9/port/qio.c:21,27 (short | long | prev | next)
1997/0327    
 
1994/0323    
static int debuging; 
 
1997/1104    
#define QDEBUG	if(1) 
1997/1105    
#define QDEBUG	if(0) 
1994/0902    
 
1993/0526    
/* 
1993/0530    
 *  IO queues 
1997/1104/sys/src/9/port/qio.c:115,1221997/1105/sys/src/9/port/qio.c:115,120
1997/0925    
	ulong addr; 
	int n; 
 
1997/1104    
	if(size < 0) 
		panic("allocb < 0"); 
1997/0925    
	n = sizeof(Block) + size + (BY2V-1); 
	b = mallocz(n+Hdrspc, 0); 
	if(b == 0) 
1997/1104/sys/src/9/port/qio.c:150,1571997/1105/sys/src/9/port/qio.c:148,153
1994/0322    
		return 0; 
	} 
1997/0925    
 
1997/1104    
	if(size < 0) 
		panic("iallocb < 0"); 
1997/0925    
	n = sizeof(Block) + size + (BY2V-1); 
1997/0926    
	b = mallocz(n+Hdrspc, 0); 
1997/0925    
	if(b == nil){ 
1997/1104/sys/src/9/port/qio.c:797,8031997/1105/sys/src/9/port/qio.c:793,798
1995/0714    
	Block *b, *nb; 
1994/1116    
	int n, dowakeup; 
1993/0526    
 
1997/1104    
poot("QB start", len); 
1993/0526    
	qlock(&q->rlock); 
1993/0527    
	if(waserror()){ 
		qunlock(&q->rlock); 
1997/1104/sys/src/9/port/qio.c:826,8371997/1105/sys/src/9/port/qio.c:821,829
1993/0527    
 
1995/0714    
		q->state |= Qstarve;	/* flag requesting producer to wake me */ 
		iunlock(q); 
1997/1104    
poot("QB before sleep", len); 
1995/0714    
		sleep(&q->rr, notempty, q); 
1997/1104    
poot("QB after sleep", len); 
1993/0526    
	} 
 
1997/1104    
poot("QB 1", len); 
1993/0528    
	/* remove a buffered block */ 
	q->bfirst = b->next; 
1997/0327    
	b->next = 0; 
1997/1104/sys/src/9/port/qio.c:848,8541997/1105/sys/src/9/port/qio.c:840,845
1993/0527    
 
1997/1102    
	/* split block if it's too big and this is not a message-oriented queue */ 
1995/0714    
	nb = b; 
1997/1104    
poot("QB 2", len); 
1995/0714    
	if(n > len){ 
		if((q->state&Qmsg) == 0){ 
1995/0917    
			iunlock(q); 
1997/1104/sys/src/9/port/qio.c:879,8851997/1105/sys/src/9/port/qio.c:870,875
1993/0528    
 
1993/0527    
	poperror(); 
1993/0526    
	qunlock(&q->rlock); 
1997/1104    
poot("QB end", nb); 
1995/0714    
	return nb; 
1993/0526    
} 
 
1997/1104/sys/src/9/port/qio.c:892,9081997/1105/sys/src/9/port/qio.c:882,894
1995/0714    
{ 
	Block *b; 
 
1997/1104    
poot("Q 1", 0); 
1995/0714    
	b = qbread(q, len); 
1997/1104    
poot("Q 2", 0); 
1995/0714    
	if(b == 0) 
		return 0; 
 
	len = BLEN(b); 
	memmove(vp, b->rp, len); 
1997/1104    
poot("Q 3", 0); 
1995/0714    
	freeb(b); 
1997/1104    
poot("Q 4", 0); 
1995/0714    
	return len; 
} 
 


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