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 }