annotate TaskManager/Cell/CellBufferManager.cc @ 65:519d24aa7ac8

*** empty log message ***
author gongo
date Sun, 17 Feb 2008 18:06:53 +0900
parents 54355e641172
children 178459e03f5c
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
60
f50c74835a9b *** empty log message ***
gongo
parents: 57
diff changeset
7 CellBufferManager::init(void)
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
8 {
65
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
9 BufferManager::init();
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
10
63
54355e641172 *** empty log message ***
gongo
parents: 60
diff changeset
11 cellTaskListImpl = new CellTaskListInfo;
54355e641172 *** empty log message ***
gongo
parents: 60
diff changeset
12 machineTaskList = new TaskListPtr[machineNum];
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
13
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
14 for (int i = 0; i < machineNum; i++) {
63
54355e641172 *** empty log message ***
gongo
parents: 60
diff changeset
15 machineTaskList[i] = cellTaskListImpl->create();
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
16 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
17 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
18
65
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
19 /**
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
20 * task の cpu type によって
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
21 * それぞれの cpu に対応する active queue に task を追加する。
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
22 */
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
23 void
60
f50c74835a9b *** empty log message ***
gongo
parents: 57
diff changeset
24 CellBufferManager::append_activeTask(HTaskPtr task)
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
25 {
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
26 TaskQueuePtr q;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
27
63
54355e641172 *** empty log message ***
gongo
parents: 60
diff changeset
28 q = taskQueueImpl->create(task);
65
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
29 if (task->cpu_type == CPU_PPE) {
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
30 activeTaskQueue = TaskQueueInfo::append(activeTaskQueue, q);
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
31 } else {
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
32 speActiveTaskQueue = TaskQueueInfo::append(speActiveTaskQueue, q);
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
33 }
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
34 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
35
65
519d24aa7ac8 *** empty log message ***
gongo
parents: 63
diff changeset
36 #if 0 // 継承するかもしれないので保存
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
37 void
60
f50c74835a9b *** empty log message ***
gongo
parents: 57
diff changeset
38 CellBufferManager::append_waitTask(HTaskPtr task)
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
39 {
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
40 TaskQueuePtr q;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
41
63
54355e641172 *** empty log message ***
gongo
parents: 60
diff changeset
42 q = taskQueueImpl->create(task);
54355e641172 *** empty log message ***
gongo
parents: 60
diff changeset
43 waitTaskQueue = taskQueueImpl->append(waitTaskQueue, q);
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
44 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
45
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
46 TaskListPtr
60
f50c74835a9b *** empty log message ***
gongo
parents: 57
diff changeset
47 CellBufferManager::get_available_taskList(void)
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
48 {
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
49 TaskListPtr list, q;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
50
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
51 list = machineTaskList[0];
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
52
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
53 while (list->next) list = list->next;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
54
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
55 if (list->length < TASK_MAX_SIZE) {
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
56 return list;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
57 } else {
63
54355e641172 *** empty log message ***
gongo
parents: 60
diff changeset
58 q = cellTaskListImpl->create();
54355e641172 *** empty log message ***
gongo
parents: 60
diff changeset
59 machineTaskList[0] = cellTaskListImpl->append(machineTaskList[0], q);
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
60 return q;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
61 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
62 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
63
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
64 void
60
f50c74835a9b *** empty log message ***
gongo
parents: 57
diff changeset
65 CellBufferManager::clear_taskList(void)
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
66 {
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
67 TaskListPtr p, p1;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
68
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
69 machineTaskList[0]->length = 0;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
70
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
71 p = machineTaskList[0]->next;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
72 while (p) {
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
73 p1 = p;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
74 p = p->next;
63
54355e641172 *** empty log message ***
gongo
parents: 60
diff changeset
75 cellTaskListImpl->free(p1);
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
76 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
77 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
78 #endif