Mercurial > hg > Game > Cerium
comparison TaskManager/Fifo/FifoTaskManagerImpl.cc @ 1077:325b6c6d7d65 draft
use one activeTaskQueue
author | yutaka@localhost.localdomain |
---|---|
date | Fri, 17 Dec 2010 02:23:09 +0900 |
parents | 5ad8fb1dc70f |
children | 6dabcd1a9ccf |
comparison
equal
deleted
inserted
replaced
1076:2a59f318cb67 | 1077:325b6c6d7d65 |
---|---|
63 set_scheduler(mainScheduler); | 63 set_scheduler(mainScheduler); |
64 | 64 |
65 taskQueueImpl = tm-> taskQueueImpl ; | 65 taskQueueImpl = tm-> taskQueueImpl ; |
66 htaskImpl = tm-> htaskImpl ; | 66 htaskImpl = tm-> htaskImpl ; |
67 waitTaskQueue = tm->waitTaskQueue; | 67 waitTaskQueue = tm->waitTaskQueue; |
68 activeTaskQueue = tm->activeTaskQueue; | |
68 | 69 |
69 taskListInfo = new QueueInfo<TaskList>(taskListPool); | 70 taskListInfo = new QueueInfo<TaskList>(taskListPool); |
70 ppeTaskList = new QueueInfo<TaskList>(taskListPool); | 71 ppeTaskList = new QueueInfo<TaskList>(taskListPool); |
71 | 72 |
72 // schedTaskManager = new SchedTask(); | 73 // schedTaskManager = new SchedTask(); |
85 * | 86 * |
86 * ActiveTaskQueue (依存条件は満たし済み) のタスクを | 87 * ActiveTaskQueue (依存条件は満たし済み) のタスクを |
87 * 実行タスクリストに入れる | 88 * 実行タスクリストに入れる |
88 */ | 89 */ |
89 void | 90 void |
90 FifoTaskManagerImpl::set_runTaskList() | 91 FifoTaskManagerImpl::set_runTaskList(QueueInfo<HTask> *activeTaskQueue) |
91 { | 92 { |
92 // printf("active task queue length = %d\n",activeTaskQueue->length()); | 93 // printf("active task queue length = %d\n",activeTaskQueue->length()); |
93 while (HTaskPtr htask = activeTaskQueue->poll()) { | 94 HTaskPtr htask = activeTaskQueue->getFirst(); |
95 while (htask != NULL) { | |
96 if (htask->cpu_type == CPU_PPE) { | |
94 set_taskList(htask, taskListInfo ); | 97 set_taskList(htask, taskListInfo ); |
98 HTaskPtr next = activeTaskQueue->getNext(htask); | |
99 activeTaskQueue->remove(htask); | |
100 htask = next; | |
101 } else { | |
102 htask = activeTaskQueue->getNext(htask); | |
103 } | |
95 } | 104 } |
96 } | 105 } |
97 | 106 |
98 void | 107 void |
99 FifoTaskManagerImpl::poll() | 108 FifoTaskManagerImpl::poll() |
100 { | 109 { |
101 set_runTaskList(); | 110 set_runTaskList(activeTaskQueue); |
102 // list を実行する | 111 // list を実行する |
103 sendTaskList(); | 112 sendTaskList(); |
104 // ppe scheduler からの mail を調べる | 113 // ppe scheduler からの mail を調べる |
105 mail_check(); | 114 mail_check(); |
106 } | 115 } |