annotate TaskManager/Cell/CellBufferManager.cc @ 57:1f8a23cdeec3

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