Mercurial > hg > Game > Cerium
changeset 1425:8bd889db45a1 draft
add API
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 11 Mar 2012 19:21:49 +0900 |
parents | 0ce6c6880b4b |
children | 1bf286e37ba3 |
files | TaskManager/kernel/ppe/HTask.cc TaskManager/kernel/ppe/HTask.h |
diffstat | 2 files changed, 24 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/HTask.cc Sun Mar 11 16:36:20 2012 +0900 +++ b/TaskManager/kernel/ppe/HTask.cc Sun Mar 11 19:21:49 2012 +0900 @@ -115,6 +115,29 @@ } /*! + @brief Task Array の次のTask + @param t 今のTaskのポインタ + 0 の場合は最初のTask + @return 次のTaskへのポインタ + */ +Task * +HTask::next_task_array(int id, Task *t, int param_count, int inData_count, int outData_count) +{ + Task *first = (Task*)rbuf; + if (t==0) { +// first->print(); + return first; + } + + Task *next = t->next(); + next->init(id, param_count, inData_count, outData_count); + if ((memaddr)next - (memaddr)rbuf > r_size) + mimpl->get_scheduler()->printf("too many task array used.\n"); + return next; +} + + +/*! @brief Task Array の中のすべてのTaskが書き込まれたかどうかをチェックする TaskArray 自体の spawn() は別に必要 @param last 今のTaskのポインタ (最後である必要がある)
--- a/TaskManager/kernel/ppe/HTask.h Sun Mar 11 16:36:20 2012 +0900 +++ b/TaskManager/kernel/ppe/HTask.h Sun Mar 11 19:21:49 2012 +0900 @@ -57,6 +57,7 @@ void set_post(PostFunction func, void *read, void *write); Task *create_task_array(int task_id, int num_task, int num_param, int num_inData, int num_outData); Task *next_task_array(int task_id, Task *t); + Task *next_task_array(int id, Task *t, int param_count, int inData_count, int outData_count); void spawn_task_array(Task *t); HTask *init(int cmd, memaddr rbuf, int rs, memaddr wbuf, int ws) {