Mercurial > hg > Members > kono > Cerium
view TaskManager/kernel/ppe/HTask.cc @ 697:257ad1a518e3
TaskArray on going...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 13 Dec 2009 18:45:09 +0900 |
parents | 458a1ad91427 |
children | d3afc8777daa |
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_count = 0; task-> inData_count = 0; task-> outData_count = 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 */