3
|
1 #ifndef INCLUDED_TASK_INFO
|
|
2 #define INCLUDED_TASK_INFO
|
|
3
|
|
4 #ifndef INCLUDED_TASK
|
|
5 # include "task.h"
|
|
6 #endif
|
|
7
|
|
8 class TaskInfo {
|
|
9 public:
|
|
10 /* constructor */
|
|
11 TaskInfo(int num = 1);
|
|
12 virtual ~TaskInfo(void) {}
|
|
13
|
|
14 /* variables */
|
|
15 TaskListPtr taskListPool;
|
|
16 TaskListPtr freeTaskList;
|
|
17
|
|
18 TaskQueuePtr taskQueuePool;
|
|
19 TaskQueuePtr freeTaskQueue;
|
|
20 TaskQueuePtr waitTaskQueue;
|
|
21 TaskQueuePtr activeTaskQueue;
|
|
22
|
|
23 /* function */
|
|
24 virtual void init(void) = 0;
|
|
25
|
|
26 // task list
|
|
27 int init_pool_taskList(int num);
|
|
28 virtual int extend_pool_taskList(int num) = 0;
|
|
29 virtual TaskListPtr get_available_taskList(void) = 0;
|
|
30 TaskListPtr get_free_taskList(void);
|
|
31
|
|
32 // task queue
|
|
33 int init_pool_taskQueue(int num);
|
|
34 TaskQueuePtr get_free_taskQueue(HTaskPtr);
|
|
35 int extend_pool_taskQueue(int num);
|
|
36
|
|
37 // task
|
|
38 int init_pool_task(int num);
|
|
39 HTaskPtr get_free_task(int cmd, int size,
|
|
40 unsigned long long in_addr,
|
|
41 unsigned long long out_addr);
|
|
42
|
|
43 virtual void clear_taskList(void) = 0;
|
|
44
|
|
45 void append_activeTask(HTaskPtr);
|
|
46 void append_waitTask(HTaskPtr);
|
|
47
|
|
48 void free_taskList(TaskListPtr q);
|
|
49 void free_taskQueue(TaskQueuePtr q);
|
|
50 void free_task(HTaskPtr q);
|
|
51
|
|
52 void check_task_finish(HTaskPtr task);
|
|
53 void notify_wait_taskQueue(HTaskPtr depend, TaskQueuePtr list);
|
|
54 TaskQueuePtr remove_taskQueue(TaskQueuePtr list, TaskQueuePtr task);
|
|
55 TaskQueuePtr remove_taskQueue_eq_task(TaskQueuePtr list, HTaskPtr task);
|
|
56
|
|
57 private:
|
|
58 int machineNum;
|
|
59 };
|
|
60
|
|
61 extern TaskQueuePtr append_taskQueue(TaskQueuePtr, TaskQueuePtr);
|
|
62 extern TaskListPtr append_taskList(TaskListPtr list, TaskListPtr q);
|
|
63
|
|
64 #endif
|