Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
 
4
static Lock	privlock;
5
static int	privinit;
6
static void	**privs;
7
 
8
extern void	**_privates;
9
extern int	_nprivates;
10
 
11
void **
12
privalloc(void)
13
{
14
	void **p;
15
	int i;
16
 
17
	lock(&privlock);
18
	if(!privinit){
19
		privinit = 1;
20
		if(_nprivates){
21
			_privates[0] = 0;
22
			for(i = 1; i < _nprivates; i++)
23
				_privates[i] = &_privates[i - 1];
24
			privs = &_privates[i - 1];
25
		}
26
	}
27
	p = privs;
28
	if(p != nil){
29
		privs = *p;
30
		*p = nil;
31
	}
32
	unlock(&privlock);
33
	return p;
34
}
35
 
36
void
37
privfree(void **p)
38
{
39
	lock(&privlock);
40
	if(p != nil && privinit){
41
		*p = privs;
42
		privs = p;
43
	}
44
	unlock(&privlock);
45
}