Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/ppe/TaskManagerImpl.cc @ 46:f154d9d07a42
*** empty log message ***
author | gongo |
---|---|
date | Fri, 15 Feb 2008 13:09:43 +0900 |
parents | aa11038dbdc1 |
children | 70a0ac46133e |
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/TaskManagerImpl.cc Fri Feb 15 13:09:43 2008 +0900 +++ b/TaskManager/kernel/ppe/TaskManagerImpl.cc Fri Feb 15 13:09:43 2008 +0900 @@ -1,17 +1,14 @@ #include <stdio.h> #include "TaskManagerImpl.h" - -#include "ppe_spe.h" +#include "types.h" +#include "error.h" void noaction(void) { } -TaskManagerImpl::TaskManagerImpl(int num) -{ - machineNum = num; -} +TaskManagerImpl::TaskManagerImpl(int num) : machineNum(num) {} void TaskManagerImpl::init(void) @@ -32,7 +29,7 @@ { HTaskPtr new_task; - new_task = taskInfo->get_free_task(cmd, size, in_addr, out_addr); + new_task = taskInfo->create_task(cmd, size, in_addr, out_addr); if (func == NULL) { new_task->post_func = noaction; @@ -52,11 +49,11 @@ { TaskQueuePtr m, s; - m = taskInfo->get_free_taskQueue(master); - s = taskInfo->get_free_taskQueue(slave); + m = taskInfo->create_taskQueue(master); + s = taskInfo->create_taskQueue(slave); - master->wait_me = append_taskQueue(master->wait_me, s); - slave->wait_i = append_taskQueue(slave->wait_i, m); + master->wait_me = TaskQueueInfo::append(master->wait_me, s); + slave->wait_i = TaskQueueInfo::append(slave->wait_i, m); } void @@ -100,17 +97,13 @@ task->self = htask; taskInfo->free_taskQueue(d); - } + } taskInfo->activeTaskQueue = NULL; return list; } - -// ../spe/main.cpp -extern MailQueuePtr spe_main(MailManager*, MailQueuePtr); - void TaskManagerImpl::run(void) { @@ -130,10 +123,11 @@ sentinel = mailManager->create_mail(MY_SPE_COMMAND_EXIT); in_mail_list = append_mailQueue(in_mail_list, sentinel); - // 返って来た mail_list には、spe からの mail がある scheduler->send_mailList(in_mail_list); scheduler->run(); out_mail_list = scheduler->recv_mailList(); + + // out_mail_list には、ppe scheduler からの mail がある in_mail_list = mail_check(out_mail_list); } while (in_mail_list); } @@ -154,18 +148,14 @@ data = q->data; if (data == MY_SPE_STATUS_READY) { -#ifdef _PPE_DEBUG - printf("[FIFO] finish\n"); -#endif + __debug_ppe("[FIFO] finish\n"); next_list = set_task(); if (next_list != NULL) { d = mailManager->create_mail((unsigned int)next_list); ret = append_mailQueue(ret, d); } } else { -#ifdef _PPE_DEBUG - printf("[PPE] recv from : 0x%x\n", data); -#endif + __debug_ppe("[PPE] recv from : 0x%x\n", data); taskInfo->check_task_finish((HTaskPtr)data); }