#define setcontext(u) _setmcontext(&(u)->mc) #define getcontext(u) _getmcontext(&(u)->mc) typedef struct mcontext mcontext_t; typedef struct ucontext ucontext_t; struct mcontext { int r[16]; }; struct ucontext { struct { void *ss_sp; uint ss_size; } uc_stack; sigset_t uc_sigmask; mcontext_t mc; }; void makecontext(ucontext_t*, void(*)(void), int, ...); int swapcontext(ucontext_t*, ucontext_t*); int _getmcontext(mcontext_t*); void _setmcontext(mcontext_t*);