home *** CD-ROM | disk | FTP | other *** search
- #ifndef _task_h_
- #define _task_h_
-
- #include <setjmp.h>
-
- 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
-