00001
00019 #ifndef COIL_TASK_H
00020 #define COIL_TASK_H
00021
00022 #include <pthread.h>
00023
00024 namespace coil
00025 {
00039 class Task
00040 {
00041 public:
00057 Task();
00058
00074 virtual ~Task();
00075
00095 virtual int open(void* args = 0);
00096
00116 virtual int close(unsigned long flags = 0);
00117
00133 virtual int svc();
00134
00150 virtual void activate();
00151
00167 virtual int wait(void);
00168
00184 virtual int suspend(void);
00185
00201 virtual int resume(void);
00202
00218 virtual void reset();
00219
00235 virtual void finalize();
00236
00256 static void* svc_run(void* args = 0);
00257
00258 private:
00259 int m_count;
00260 pthread_t m_thread;
00261 pthread_attr_t m_attr;
00262 void* m_args;
00263
00264 };
00265 };
00266
00267 #endif // COIL_TASK_H