Mercurial > hg > Game > Cerium
diff TaskManager/kernel/ppe/HTaskInfo.cc @ 109:028ffc9c0375 draft
Cerium cvs version
author | gongo@gendarme.local |
---|---|
date | Wed, 12 Nov 2008 17:39:33 +0900 |
parents | 504899860e66 |
children | 768452fab95e |
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/HTaskInfo.cc Wed Nov 12 17:29:35 2008 +0900 +++ b/TaskManager/kernel/ppe/HTaskInfo.cc Wed Nov 12 17:39:33 2008 +0900 @@ -37,16 +37,25 @@ /* Connect all free queue in the pool */ for (q = htaskPool + 1; --num > 0; q++) { q->next = q + 1; + q->inData = (ListDataPtr)malloc(sizeof(ListData)); + q->outData = (ListDataPtr)malloc(sizeof(ListData)); } q->next = freeHTask; + q->inData = (ListDataPtr)malloc(sizeof(ListData)); + q->outData = (ListDataPtr)malloc(sizeof(ListData)); + freeHTask = htaskPool + 1; return 0; } +/** + * Task をプールから取って来て返す + * + * @param [cmd] タスクコマンド + */ HTaskPtr -//HTaskInfo::create(int cmd, int size, DmaBuffer *in_addr, DmaBuffer *out_addr) -HTaskInfo::create(int cmd, int size, unsigned int in_addr, unsigned int out_addr) +HTaskInfo::create(int cmd) { HTaskPtr q; @@ -58,9 +67,11 @@ freeHTask = freeHTask->next; q->command = cmd; - q->in_addr = in_addr; - q->out_addr = out_addr; - q->in_size = size; + q->inData->clear(); + q->outData->clear(); + q->self = (unsigned int)q; + q->param_size = 0; + q->wait_me = NULL; q->wait_i = NULL; q->post_func = NULL; @@ -80,40 +91,20 @@ void HTaskInfo::destroy(void) { - HTaskPtr q; + HTaskPtr q, tmp; +#if 1 + q = htaskPool; + while (q) { + tmp = q->next; + free(q); + q = tmp; + } +#else for (q = htaskPool; q; q = q->next) { free(q); } +#endif + freeHTask = htaskPool = NULL; } - - -/** - * manager->set_task_depend(task1, task2); // task2 は task1 の終了を待つ - * - * ってやるより - * - * task2->set_depend(task1); - * - * ってやったほうがわかりやすいよねー的な話し合いで - * 下のようなAPIを作りました - */ - -void -HTask::spawn(void) -{ - mimpl->spawn_task(this); -} - -void -HTask::set_depend(HTaskPtr master) -{ - mimpl->set_task_depend(master, this); -} - -void -HTask::set_cpu(CPU_TYPE type) -{ - mimpl->set_task_cpu(this, type); -}