Mercurial > hg > Members > kono > Cerium
annotate TaskManager/kernel/ppe/TaskManager.cc @ 713:f725c6455d19
remove SIMPLE_TASK conditional
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 16 Dec 2009 15:27:46 +0900 |
parents | d3afc8777daa |
children | 2708c4a7bade 496a8159e840 |
rev | line source |
---|---|
3 | 1 #include "TaskManager.h" |
619 | 2 #include "Scheduler.h" |
700 | 3 #include "HTask.h" |
4 #include "Task.h" | |
5 #include "SysFunc.h" | |
3 | 6 |
229 | 7 TaskManager::TaskManager(int num) : machineNum(num) |
8 { | |
9 } | |
3 | 10 |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
11 TaskManager::~TaskManager() |
194 | 12 { |
13 delete m_impl; | |
14 } | |
15 | |
3 | 16 /** |
17 * create_impl(int); | |
18 * | |
109 | 19 * [cell版] ../../Cell/CellTaskManagerImpl.cpp |
20 * [fifo版] ../../Fifo/FifoTaskManagerImpl.cpp | |
21 * で定義されています。コンパイル時に | |
3 | 22 * |
109 | 23 * % make cell ってすると cell 版が、 |
24 * % make fifo ってすると fifo 版 がリンクされるようにしているので | |
25 * それに応じて create_impl が返す値を変えています。 | |
26 * cell だったら CellManagerImpl, fifo だったら FifoManagerImpl です。 | |
3 | 27 * |
109 | 28 * 今までは ifdef CELL とか書いてましたわ。どっちがいいかね |
3 | 29 * |
109 | 30 * てか、普通に TaskManagerImpl に関数持たせた方が早いか・・・? |
3 | 31 */ |
32 extern TaskManagerImpl* create_impl(int); | |
33 | |
34 void | |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
35 TaskManager::init() |
3 | 36 { |
37 m_impl = create_impl(machineNum); | |
38 m_impl->init(); | |
109 | 39 m_impl->systask_init(); |
3 | 40 } |
41 | |
20 | 42 void |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
43 TaskManager::finish() |
20 | 44 { |
45 delete m_impl; | |
46 } | |
47 | |
3 | 48 /** |
109 | 49 * @param [command] Task executes method number |
3 | 50 * |
51 * @return this task | |
52 */ | |
53 HTaskPtr | |
109 | 54 TaskManager::create_task(int cmd) |
3 | 55 { |
109 | 56 return m_impl->create_task(cmd); |
3 | 57 } |
58 | |
634 | 59 HTaskPtr |
60 TaskManager::create_task(int cmd, memaddr r, long rs, memaddr w, long ws) | |
61 { | |
62 return m_impl->create_task(cmd,r,rs,w,ws); | |
63 } | |
64 | |
700 | 65 HTaskPtr |
66 TaskManager::create_task_array(int id, int num_task, int num_param, int num_inData, int num_outData) { | |
67 HTaskPtr ta = create_task(TaskArray,0,0,0,0); | |
68 ta->create_task_array(id, num_task, num_param, num_inData, num_outData) ; | |
69 return ta; | |
70 } | |
634 | 71 |
216
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
72 /** |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
73 * TaskManaer 終了時に実行される関数の設定 |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
74 */ |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
75 void |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
76 TaskManager::set_TMend(void (*endf)(TaskManager *manager)) |
216
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
77 { |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
78 tm_end = endf; |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
79 } |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
80 |
3 | 81 void |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
82 TaskManager::run() |
3 | 83 { |
84 m_impl->run(); | |
85 } | |
216
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
86 |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
87 void* |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
88 TaskManager::allocate(int size) { |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
89 return m_impl->allocate(size); |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
90 } |
220 | 91 |
92 int | |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
93 TaskManager::get_cpuNum() |
220 | 94 { |
95 return machineNum; | |
96 } | |
229 | 97 |
98 int | |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
99 TaskManager::get_random() |
229 | 100 { |
619 | 101 return random(); |
102 } | |
103 | |
104 MemList* | |
105 TaskManager::createMemList(int size, int count) | |
106 { | |
107 return get_scheduler()->createMemList(size, count); | |
229 | 108 } |
368 | 109 |
373 | 110 Scheduler* |
111 TaskManager::get_scheduler() { | |
112 return m_impl->get_scheduler(); | |
368 | 113 } |
480
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
397
diff
changeset
|
114 |
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
397
diff
changeset
|
115 /* end */ |