aboutsummaryrefslogtreecommitdiff
path: root/src/lib9/priv.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib9/priv.c')
-rw-r--r--src/lib9/priv.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/lib9/priv.c b/src/lib9/priv.c
new file mode 100644
index 00000000..651c48c1
--- /dev/null
+++ b/src/lib9/priv.c
@@ -0,0 +1,32 @@
+#include <u.h>
+#include <libc.h>
+#include "9proc.h"
+
+static Lock privlock;
+static ulong privmap;
+
+int
+privalloc(void)
+{
+ int i;
+
+ lock(&privlock);
+ for(i=0; i<NPRIV; i++)
+ if((privmap&(1<<i)) == 0){
+ privmap |= (1<<i);
+ unlock(&privlock);
+ return i;
+ }
+ unlock(&privlock);
+ return -1;
+}
+
+void**
+privmem(int i)
+{
+ Uproc *up;
+
+ up = _p9uproc();
+ return &up->priv[i];
+}
+