tthread.c - plan9port - [fork] Plan 9 from user space
HTML git clone git://src.adamsgaard.dk/plan9port
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
tthread.c (460B)
---
1 #include "a.h"
2
3 typedef struct New New;
4 struct New
5 {
6 void (*fn)(void*);
7 void *arg;
8 };
9
10 Channel *mailthreadchan;
11
12 void
13 mailthread(void (*fn)(void*), void *arg)
14 {
15 New n;
16
17 n.fn = fn;
18 n.arg = arg;
19 send(mailthreadchan, &n);
20 }
21
22 void
23 mailproc(void *v)
24 {
25 New n;
26
27 USED(v);
28 while(recv(mailthreadchan, &n) == 1)
29 threadcreate(n.fn, n.arg, STACK);
30 }
31
32 void
33 mailthreadinit(void)
34 {
35 mailthreadchan = chancreate(sizeof(New), 0);
36 proccreate(mailproc, nil, STACK);
37 }