57
|
1 #include <stdio.h>
|
|
2 #include <stdlib.h>
|
|
3 #include "CellBufferManager.h"
|
|
4 #include "CellTaskListInfo.h"
|
|
5
|
|
6 void
|
|
7 BufferManager::init(void)
|
|
8 {
|
|
9 tlistImpl = new CellTaskListInfo;
|
|
10 tqueueImpl = new TaskQueueInfo;
|
|
11 htaskImpl = new HTaskInfo;
|
|
12
|
|
13 tlistImpl->init(machineNum*2);
|
|
14 tqueueImpl->init(TASK_MAX_SIZE*4);
|
|
15 htaskImpl->init(TASK_MAX_SIZE*2);
|
|
16
|
|
17 machineTaskList = new TaskListPtr[machineNum];
|
|
18
|
|
19 for (int i = 0; i < machineNum; i++) {
|
|
20 machineTaskList[i] = tlistImpl->create();
|
|
21 }
|
|
22 }
|
|
23
|
|
24 #if 0 // 継承するかもしれないので保存
|
|
25 void
|
|
26 BufferManager::append_activeTask(HTaskPtr task)
|
|
27 {
|
|
28 TaskQueuePtr q;
|
|
29
|
|
30 q = tqueueImpl->create(task);
|
|
31 activeTaskQueue = tqueueImpl->append(activeTaskQueue, q);
|
|
32 }
|
|
33
|
|
34 void
|
|
35 BufferManager::append_waitTask(HTaskPtr task)
|
|
36 {
|
|
37 TaskQueuePtr q;
|
|
38
|
|
39 q = tqueueImpl->create(task);
|
|
40 waitTaskQueue = tqueueImpl->append(waitTaskQueue, q);
|
|
41 }
|
|
42
|
|
43 TaskListPtr
|
|
44 BufferManager::get_available_taskList(void)
|
|
45 {
|
|
46 TaskListPtr list, q;
|
|
47
|
|
48 list = machineTaskList[0];
|
|
49
|
|
50 while (list->next) list = list->next;
|
|
51
|
|
52 if (list->length < TASK_MAX_SIZE) {
|
|
53 return list;
|
|
54 } else {
|
|
55 q = tlistImpl->create();
|
|
56 machineTaskList[0] = tlistImpl->append(machineTaskList[0], q);
|
|
57 return q;
|
|
58 }
|
|
59 }
|
|
60
|
|
61 void
|
|
62 BufferManager::clear_taskList(void)
|
|
63 {
|
|
64 TaskListPtr p, p1;
|
|
65
|
|
66 machineTaskList[0]->length = 0;
|
|
67
|
|
68 p = machineTaskList[0]->next;
|
|
69 while (p) {
|
|
70 p1 = p;
|
|
71 p = p->next;
|
|
72 tlistImpl->free(p1);
|
|
73 }
|
|
74 }
|
|
75 #endif
|