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