blob: bb40def13ac755337573f4b0b3d357d2e232cf56 [file] [log] [blame]
#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;
USED(v);
while(recv(mailthreadchan, &n) == 1)
threadcreate(n.fn, n.arg, STACK);
}
void
mailthreadinit(void)
{
mailthreadchan = chancreate(sizeof(New), 0);
proccreate(mailproc, nil, STACK);
}