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

1991/1022/port/devenv.c (diff list | history)

1991/1018/sys/src/9/port/devenv.c:28,331991/1022/sys/src/9/port/devenv.c:28,34 (short | long | prev | next)
1991/1018    
	Envval	*free[EVFREE+1]; 
	char	*block;			/* the free page we are allocating from */ 
	char	*lim;			/* end of block */ 
1991/1022    
	int	npage;			/* total pages gotten from newpage() */ 
1990/0227    
}envalloc; 
 
1991/1018    
QLock	evlock; 
1991/1018/sys/src/9/port/devenv.c:366,3741991/1022/sys/src/9/port/devenv.c:367,376
1991/1018    
			b += ALIGN + sizeof *ev; 
		} 
		b = (char*)VA(kmap(newpage(0, 0, 0))); 
1991/1022    
		envalloc.npage++; 
1991/1018    
		envalloc.lim = b + BY2PG; 
	} 
                 
1991/1022    
	 
1991/1018    
	ev = (Envval*)b; 
	ev->val = b + sizeof *ev; 
	ev->ref = 1; 
1991/1018/sys/src/9/port/devenv.c:398,4031991/1022/sys/src/9/port/devenv.c:400,442
1991/1018    
		n = EVFREE; 
	ev->next = envalloc.free[n]; 
	envalloc.free[n] = ev; 
1991/1022    
} 
 
void 
envdump(void) 
{ 
	Envval *ev; 
	int i, j; 
 
	qlock(&evlock); 
	print("pages allocated: %d\n", envalloc.npage); 
	print("bytes left in page: %d\n", envalloc.lim - envalloc.block); 
	for(i = 0; i < EVFREE + 1; i++){ 
		j = 0; 
		if(i == EVFREE) 
			print("big blocks:\n"); 
		else 
			print("%d byte blocks:\n", (i + 1) * ALIGN); 
		for(ev = envalloc.free[i]; ev; ev = ev->next){ 
			if(j++ == 1000){ 
				print("circular\n"); 
				break; 
			} 
			if(j < 10) 
				print("\tenv %d %lux n%lux p%lux r%d\n", 
					ev->len, ev, ev->next, ev->prev, ev->ref); 
		} 
	} 
	for(i = 0; i < EVHASH; i++){ 
		j = 0; 
		for(ev = evhash[i].next; ev; ev = ev->next){ 
			if(j++ == 1000){ 
				print("hash bucket %d circular\n", i); 
				break; 
			} 
		} 
	} 
	qunlock(&evlock); 
1990/0227    
} 
1991/0927    
 
/* 


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