annotate TaskManager/Cell/CellBufferManager.cc @ 76:5a1a5f4c28fd

*** empty log message ***
author gongo
date Mon, 18 Feb 2008 11:40:11 +0900
parents 178459e03f5c
children 5c194c71eca8
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 }
70
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
63 #endif
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
64
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
65 void
70
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
66 CellBufferManager::clear_cellTaskList(void)
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
67 {
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
68 TaskListPtr p, p1;
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
69
70
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
70 for (int i = 0; i < machineNum; i++) {
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
71 machineTaskList[i]->length = 0;
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
72
70
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
73 p = machineTaskList[i]->next;
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
74 while (p) {
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
75 p1 = p;
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
76 p = p->next;
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
77 cellTaskListImpl->free(p1);
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
78 }
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
79
178459e03f5c *** empty log message ***
gongo
parents: 65
diff changeset
80 machineTaskList[i]->next = NULL;
57
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
81 }
1f8a23cdeec3 *** empty log message ***
gongo
parents:
diff changeset
82 }