X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=lib%2Fmt.h;fp=lib%2Fmt.h;h=ad049e7732ce9dbe773fa127d145aee267d0ffd3;hb=ddf9919274745e46fc8005f8a86d9b58500b628e;hp=0000000000000000000000000000000000000000;hpb=f0bbedf750f1530ec05bf2b8122479c924bbf2fe;p=ashd.git diff --git a/lib/mt.h b/lib/mt.h new file mode 100644 index 0000000..ad049e7 --- /dev/null +++ b/lib/mt.h @@ -0,0 +1,26 @@ +#ifndef _MUTHREAD_H +#define _MUTHREAD_H + +#include +#include + +#define vavar(type, name) type name = va_arg(args, type) + +struct muth { + ucontext_t ctxt, *last; + void *stack; + void (*entry)(struct muth *muth, va_list args); + va_list *arglist; + int running; + int yr; + int freeme; + int vgid; +}; + +struct muth *mustart(void (*fn)(struct muth *muth, va_list args), ...); +void resume(struct muth *muth, int ret); +int yield(void); + +extern struct muth *current; + +#endif