#ifndef _task_h_ #define _task_h_ #include typedef int (TaskProc)(int, void*); class Task { public: Task *prev; // links into run-state queues Task *next; Task *parent; jmp_buf state; unsigned *stack; unsigned stack_len; enum RunState { Running, Blocked, Waiting, Dead }; RunState run_state; int ret_val; friend int fall_off_end(); public: Task(TaskProc proc=0, int val=0, void* ptr=0, int stacksize=1024); // use default proc in main() to setup initial task ~Task(); int ReturnValue(); friend int Wait(Task* child=0); friend void Return(int rv=0); friend void Yield(); }; extern Task *thisTask; #endif