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

1991/0328/port/stream.c (diff list | history)

1991/0323/sys/src/9/port/stream.c:227,2321991/0328/sys/src/9/port/stream.c:227,235 (short | long | prev | next)
1990/0227    
	bp->next = 0; 
	bp->type = M_DATA; 
	bp->flags &= S_CLASS; 
1991/0328    
	if(bp->lim-bp->rptr<size && size<4096) 
		panic("allocb %lux %lux %d %ux %d", bp->lim, bp->rptr, 
			size, bp->flags, bcp-bclass); 
1990/0227    
	return bp; 
} 
 
1991/0323/sys/src/9/port/stream.c:237,2671991/0328/sys/src/9/port/stream.c:240,266
1990/0227    
void 
freeb(Block *bp) 
{ 
1991/0328    
	Block *nbp; 
1990/0227    
	Bclass *bcp; 
1990/0312    
	int tries; 
1990/1229    
	int x; 
1990/0227    
 
1990/0513    
	if((bp->flags&S_CLASS) >= Nclass) 
		panic("freeb class"); 
1990/0227    
	bcp = &bclass[bp->flags & S_CLASS]; 
	lock(bcp); 
1990/0312    
	bp->rptr = bp->wptr = 0; 
1990/0227    
	if(bcp->first) 
		bcp->last->next = bp; 
	else 
		bcp->first = bp; 
1990/0312    
	tries = 0; 
	while(bp->next){ 
		if(++tries > 10){ 
			dumpstack(); 
			panic("freeb"); 
		} 
		bp = bp->next; 
1991/0328    
	for(; bp; bp = nbp){ 
		bcp = &bclass[bp->flags & S_CLASS]; 
		lock(bcp); 
		bp->rptr = bp->wptr = 0; 
		if(bcp->first) 
			bcp->last->next = bp; 
		else 
			bcp->first = bp; 
		bcp->last = bp; 
		nbp = bp->next; 
		bp->next = 0; 
		unlock(bcp); 
		if(bcp->r.p) 
			wakeup(&bcp->r); 
1990/0312    
	} 
1990/0227    
	bcp->last = bp; 
	unlock(bcp); 
1990/0321    
	if(bcp->r.p) 
		wakeup(&bcp->r); 
1990/0227    
} 
 
/* 


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