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

