Mercurial > hg > Members > kono > Cerium
annotate TaskManager/kernel/ppe/TaskManager.cc @ 397:a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
don't move.
author | game@henri.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Sun, 20 Sep 2009 18:55:26 +0900 |
parents | eab18aa0c7f6 |
children | 46464727d825 |
rev | line source |
---|---|
3 | 1 #include "TaskManager.h" |
2 | |
229 | 3 TaskManager::TaskManager(int num) : machineNum(num) |
4 { | |
5 gen_random = new Random; | |
6 } | |
3 | 7 |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
8 TaskManager::~TaskManager() |
194 | 9 { |
10 delete m_impl; | |
229 | 11 delete gen_random; |
194 | 12 } |
13 | |
3 | 14 /** |
15 * create_impl(int); | |
16 * | |
109 | 17 * [cell版] ../../Cell/CellTaskManagerImpl.cpp |
18 * [fifo版] ../../Fifo/FifoTaskManagerImpl.cpp | |
19 * で定義されています。コンパイル時に | |
3 | 20 * |
109 | 21 * % make cell ってすると cell 版が、 |
22 * % make fifo ってすると fifo 版 がリンクされるようにしているので | |
23 * それに応じて create_impl が返す値を変えています。 | |
24 * cell だったら CellManagerImpl, fifo だったら FifoManagerImpl です。 | |
3 | 25 * |
109 | 26 * 今までは ifdef CELL とか書いてましたわ。どっちがいいかね |
3 | 27 * |
109 | 28 * てか、普通に TaskManagerImpl に関数持たせた方が早いか・・・? |
3 | 29 */ |
30 extern TaskManagerImpl* create_impl(int); | |
31 | |
32 void | |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
33 TaskManager::init() |
3 | 34 { |
35 m_impl = create_impl(machineNum); | |
36 m_impl->init(); | |
109 | 37 m_impl->systask_init(); |
3 | 38 } |
39 | |
20 | 40 void |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
41 TaskManager::finish() |
20 | 42 { |
43 delete m_impl; | |
44 } | |
45 | |
3 | 46 /** |
109 | 47 * @param [command] Task executes method number |
3 | 48 * |
49 * @return this task | |
50 */ | |
51 HTaskPtr | |
109 | 52 TaskManager::create_task(int cmd) |
3 | 53 { |
109 | 54 return m_impl->create_task(cmd); |
3 | 55 } |
56 | |
216
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
57 /** |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
58 * TaskManaer 終了時に実行される関数の設定 |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
59 */ |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
60 void |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
61 TaskManager::set_TMend(void (*endf)(TaskManager *manager)) |
216
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
62 { |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
63 tm_end = endf; |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
64 } |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
65 |
3 | 66 void |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
67 TaskManager::run() |
3 | 68 { |
69 m_impl->run(); | |
70 } | |
216
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
71 |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
72 void* |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
73 TaskManager::allocate(int size) { |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
74 return m_impl->allocate(size); |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
75 } |
220 | 76 |
77 int | |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
78 TaskManager::get_cpuNum() |
220 | 79 { |
80 return machineNum; | |
81 } | |
229 | 82 |
83 int | |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
84 TaskManager::get_random() |
229 | 85 { |
86 return gen_random->getData(); | |
87 } | |
368 | 88 |
373 | 89 Scheduler* |
90 TaskManager::get_scheduler() { | |
91 return m_impl->get_scheduler(); | |
368 | 92 } |