#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);
}

