aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/upas/nfs/thread.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2006-02-15 12:39:09 +0000
committerrsc <devnull@localhost>2006-02-15 12:39:09 +0000
commit941e17134e92de7f12977f1899860b57bbf83330 (patch)
treee0c7dc5b23b603b24c2ec0cb8d3544f91bb36101 /src/cmd/upas/nfs/thread.c
parent1ea614ffaf9378df45410995d0a8c13042bba123 (diff)
downloadplan9port-941e17134e92de7f12977f1899860b57bbf83330.tar.gz
plan9port-941e17134e92de7f12977f1899860b57bbf83330.tar.bz2
plan9port-941e17134e92de7f12977f1899860b57bbf83330.zip
imap-based new upas/fs
Diffstat (limited to 'src/cmd/upas/nfs/thread.c')
-rw-r--r--src/cmd/upas/nfs/thread.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/cmd/upas/nfs/thread.c b/src/cmd/upas/nfs/thread.c
new file mode 100644
index 00000000..710a33d7
--- /dev/null
+++ b/src/cmd/upas/nfs/thread.c
@@ -0,0 +1,37 @@
+#include "a.h"
+
+typedef struct New New;
+struct New
+{
+ void (*fn)(void*);
+ void *arg;
+};
+
+Channel *mailthreadchan;
+
+void
+mailthread(void (*fn)(void*), void *arg)
+{
+ New n;
+
+ n.fn = fn;
+ n.arg = arg;
+ send(mailthreadchan, &n);
+}
+
+void
+mailproc(void *v)
+{
+ New n;
+
+ while(recv(mailthreadchan, &n) == 1)
+ threadcreate(n.fn, n.arg, STACK);
+}
+
+void
+mailthreadinit(void)
+{
+ mailthreadchan = chancreate(sizeof(New), 0);
+ proccreate(mailproc, nil, STACK);
+}
+