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

1990/03292/port/stream.c (diff list | history)

1990/0322/sys/src/9/port/stream.c:51,571990/03292/sys/src/9/port/stream.c:51,57 (short | long | prev | next)
1990/0227    
typedef struct { 
	int	size; 
1990/0312    
	Blist; 
1990/0322    
	QLock	q;	/* qlock for sleepers on r */ 
1990/03292    
	QLock;		/* qlock for sleepers on r */ 
1990/0312    
	Rendez	r;	/* sleep here waiting for blocks */ 
1990/0227    
} Bclass; 
Bclass bclass[Nclass]={ 
1990/0322/sys/src/9/port/stream.c:123,1341990/03292/sys/src/9/port/stream.c:123,133
1990/0227    
	lock(bcp); 
	while(bcp->first == 0){ 
		unlock(bcp); 
1990/0322    
		print("waiting for block %d\n", size); 
		if(loop++ > 10) 
			panic("waiting for blocks"); 
		qlock(&bcp->q); 
1990/03292    
			panic("waiting for blocks\n"); 
		qlock(bcp); 
1990/0322    
		tsleep(&bcp->r, isblock, (void *)bcp, 250); 
		qunlock(&bcp->q); 
1990/03292    
		qunlock(bcp); 
1990/0227    
		lock(bcp); 
	} 
	bp = bcp->first; 
1990/0322/sys/src/9/port/stream.c:628,6341990/03292/sys/src/9/port/stream.c:627,632
1990/0227    
	if(qi->open) 
		(*qi->open)(RD(s->devq), s); 
 
	c->flag |= COPEN; 
	unlock(s); 
	poperror(); 
	return s; 
1990/0322/sys/src/9/port/stream.c:682,6881990/03292/sys/src/9/port/stream.c:680,686
1990/0227    
	/* 
	 *  if not open, ignore it 
	 */ 
	if(!(c->flag & COPEN)) 
1990/03292    
	if(!c->stream) 
1990/0227    
		return; 
 
	/* 


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