annotate TaskManager/kernel/ppe/HTask.cc @ 297:54725883131b draft

start task config
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 07 Jun 2009 13:22:58 +0900
parents da8edd0735f2
children 5b995810b86a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
1 #include "HTask.h"
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
2 #include "ListData.h"
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
3 #include "TaskManagerImpl.h"
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
4
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
5
293
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
6 /*!
297
54725883131b start task config
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
7 manager->set_task_depend(task1, task2); // task2 は task1 の終了を待つ
293
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
8
297
54725883131b start task config
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
9 ってやるより
293
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
10
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
11 task2->set_depend(task1);
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
12
297
54725883131b start task config
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
13 ってやったほうがわかりやすいよねー的な話し合いで
54725883131b start task config
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
14 下のようなAPIを作りました
293
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
15 */
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
16
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
17 void
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
18 HTask::spawn(void)
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
19 {
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
20 mimpl->spawn_task(this);
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
21 }
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
22
293
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
23 /*!
297
54725883131b start task config
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
24 @brief この Task が待ち合わせする Task を指定する
54725883131b start task config
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
25 @param[in] master この Task が終了待ち合わせをする相手の Task
293
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
26
297
54725883131b start task config
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
27 繰り返し使用する事で複数の Task を待ち合わせする事ができる。
293
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
28
297
54725883131b start task config
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
29 wait_for している Task の入力バッファにこの Task から書き込みできる機能があると良い
293
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
30 */
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
31
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
32 void
293
da8edd0735f2 add wait_for document
e065746@localhost.localdomain
parents: 109
diff changeset
33 HTask::wait_for(HTaskPtr master)
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
34 {
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
35 mimpl->set_task_depend(master, this);
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
36 }
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
37
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
38 void
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
39 HTask::set_cpu(CPU_TYPE type)
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
40 {
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
41 mimpl->set_task_cpu(this, type);
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
42 }
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
43
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
44 void
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
45 HTask::set_post(void (*func)(void *), void *arg)
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
46 {
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
47 this->post_func = func;
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
48 this->post_arg = arg;
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents:
diff changeset
49 }