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) {