00001
00019 #ifndef COIL_TASK_H
00020 #define COIL_TASK_H
00021
00022 #include <pthread.h>
00023
00024 namespace coil
00025 {
00026 class Task
00027 {
00028 public:
00029 Task();
00030 virtual ~Task();
00031 virtual int open(void* args = 0);
00032 virtual int close(unsigned long flags = 0);
00033 virtual int svc();
00034 virtual void activate();
00035 virtual int wait(void);
00036 virtual int suspend(void);
00037 virtual int resume(void);
00038 virtual void reset();
00039 virtual void finalize();
00040 static void* svc_run(void* args = 0);
00041 private:
00042 int m_count;
00043 pthread_t m_thread;
00044 pthread_attr_t m_attr;
00045 void* m_args;
00046
00047 };
00048 };
00049
00050 #endif // COIL_TASK_H