Mercurial > hg > Members > kono > Cerium
annotate TaskManager/kernel/ppe/TaskManager.cc @ 635:8cc609285bbe
SimpleTask worked on Mac OS X
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 18 Nov 2009 18:36:25 +0900 |
parents | 0558abba673c |
children | d3afc8777daa |
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 | |
634 | 56 HTaskPtr |
57 TaskManager::create_task(int cmd, memaddr r, long rs, memaddr w, long ws) | |
58 { | |
59 return m_impl->create_task(cmd,r,rs,w,ws); | |
60 } | |
61 | |
62 | |
216
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 * TaskManaer 終了時に実行される関数の設定 |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
65 */ |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
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::set_TMend(void (*endf)(TaskManager *manager)) |
216
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
68 { |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
69 tm_end = endf; |
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 |
3 | 72 void |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
73 TaskManager::run() |
3 | 74 { |
75 m_impl->run(); | |
76 } | |
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 void* |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
79 TaskManager::allocate(int size) { |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
80 return m_impl->allocate(size); |
894675539cbf
rename cerium_main to TMmain, add TMend()
gongo@localhost.localdomain
parents:
194
diff
changeset
|
81 } |
220 | 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_cpuNum() |
220 | 85 { |
86 return machineNum; | |
87 } | |
229 | 88 |
89 int | |
397
a4f690f44842
delete manager (in kernel/ppe/TaskManager.h)
game@henri.cr.ie.u-ryukyu.ac.jp
parents:
373
diff
changeset
|
90 TaskManager::get_random() |
229 | 91 { |
619 | 92 return random(); |
93 } | |
94 | |
95 MemList* | |
96 TaskManager::createMemList(int size, int count) | |
97 { | |
98 return get_scheduler()->createMemList(size, count); | |
229 | 99 } |
368 | 100 |
373 | 101 Scheduler* |
102 TaskManager::get_scheduler() { | |
103 return m_impl->get_scheduler(); | |
368 | 104 } |
480
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
397
diff
changeset
|
105 |
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
397
diff
changeset
|
106 /* end */ |