Mercurial > hg > Members > kono > Cerium
view TaskManager/kernel/ppe/HTask.cc @ 684:458a1ad91427
Task Array generation worked.
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 06 Dec 2009 23:03:28 +0900 |
parents | 9a6cb2439593 |
children | 257ad1a518e3 |
line wrap: on
line source
#include "HTask.h" #include "ListData.h" #include "TaskManagerImpl.h" /*! manager->set_task_depend(task1, task2); // task2 は task1 の終了を待つ ってやるより task2->set_depend(task1); ってやったほうがわかりやすいよねー的な話し合いで 下のようなAPIを作りました */ void HTask::spawn(void) { mimpl->spawn_task(this); } /*! @brief この Task が待ち合わせする Task を指定する @param[in] master この Task が終了待ち合わせをする相手の Task 繰り返し使用する事で複数の Task を待ち合わせする事ができる。 wait_for している Task の入力バッファにこの Task から書き込みできる機能があると良い */ void HTask::wait_for(HTaskPtr master) { mimpl->set_task_depend(master, this); } void HTask::set_cpu(CPU_TYPE type) { mimpl->set_task_cpu(this, type); } void HTask::set_post(PostFunction func,void *arg1, void *arg2) { this->post_func = func; this->post_arg1 = arg1; this->post_arg2 = arg2; } #ifdef SIMPLE_TASK Task * HTask::create_task_array(int task_id, int pos) { Task *task = (Task*)((memaddr)rbuf + pos); task->set_task_id(task_id); task-> param_size = 0; task-> inData_size = 0; task-> outData_size = 0; task-> inData_offset = 0; task-> outData_offset = 0; return task; } void HTask::spawn_task_array(int pos) { if (pos!= r_size) { printf("spawn task array size differ pos 0x%x r_size 0x%x\n", pos, r_size); } } #endif /* end */