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

1992/0625/port/alloc.c (diff list | history)

1992/0625/sys/src/9/port/alloc.c:3,81992/0707/sys/src/9/port/alloc.c:3,9 (short | long | prev | next)
1992/0618    
#include	"mem.h" 
#include	"dat.h" 
#include	"fns.h" 
1992/0707    
#include	"error.h" 
1992/0618    
 
1992/0621    
/* 
 * Plan 9 has two kernel allocators, the x... routines provide a first 
1992/0625/sys/src/9/port/alloc.c:19,251992/0707/sys/src/9/port/alloc.c:20,26
1992/0619    
 
1992/0618    
enum 
{ 
1992/0619    
	Maxpow		= 16, 
1992/0707    
	Maxpow		= 18, 
1992/0619    
	Nhole		= 128, 
	Magichole	= 0xDeadBabe, 
1992/0620    
	Magic2n		= 0xFeedBeef, 
1992/0625/sys/src/9/port/alloc.c:260,2661992/0707/sys/src/9/port/alloc.c:261,267
1992/0619    
	int pow; 
	Bucket *bp; 
 
1992/0620    
	for(pow = 3; pow < Maxpow; pow++) 
1992/0707    
	for(pow = 3; pow <= Maxpow; pow++) 
1992/0619    
		if(size <= (1<<pow)) 
			goto good; 
 
1992/0625/sys/src/9/port/alloc.c:298,3051992/0707/sys/src/9/port/alloc.c:299,307
1992/0619    
{ 
1992/0625    
	char *s; 
1992/0619    
	void *p; 
1992/0707    
	int attempt; 
1992/0619    
 
1992/0625    
	for(;;) { 
1992/0707    
	for(attempt = 0; attempt < 1000; attempt++) { 
1992/0625    
		p = malloc(size); 
		if(p != nil) 
			return p; 
1992/0625/sys/src/9/port/alloc.c:313,3191992/0707/sys/src/9/port/alloc.c:315,322
1992/0625    
		qunlock(&arena.rq); 
		u->p->psstate = s; 
1992/0622    
	} 
1992/0619    
	return p; 
1992/0707    
	pexit(Enomem, 1); 
	return 0; 
1992/0623    
} 
 
int 


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