diff options
author | rsc <devnull@localhost> | 2006-02-15 12:39:09 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2006-02-15 12:39:09 +0000 |
commit | 941e17134e92de7f12977f1899860b57bbf83330 (patch) | |
tree | e0c7dc5b23b603b24c2ec0cb8d3544f91bb36101 /src/cmd/upas/nfs/thread.c | |
parent | 1ea614ffaf9378df45410995d0a8c13042bba123 (diff) | |
download | plan9port-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.c | 37 |
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); +} + |