Various additions and fixes.
diff --git a/src/lib9/priv.c b/src/lib9/priv.c
new file mode 100644
index 0000000..651c48c
--- /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];
+}
+