Mercurial > hg > Members > kono > Cerium
comparison TaskManager/kernel/ppe/TaskManager.cc @ 14:41ccd4b38184
*** empty log message ***
author | gongo |
---|---|
date | Fri, 08 Feb 2008 18:00:21 +0900 |
parents | 2356238ebea7 |
children | 0c9341da4522 |
comparison
equal
deleted
inserted
replaced
13:b658f8ca4408 | 14:41ccd4b38184 |
---|---|
1 #include "TaskManager.h" | 1 #include "TaskManager.h" |
2 #include "SymTable.h" | |
2 | 3 |
3 TaskManager::TaskManager(int num) | 4 TaskManager::TaskManager(int num) |
4 { | 5 { |
5 machineNum = num; | 6 machineNum = num; |
6 } | 7 } |
26 void | 27 void |
27 TaskManager::init(void) | 28 TaskManager::init(void) |
28 { | 29 { |
29 m_impl = create_impl(machineNum); | 30 m_impl = create_impl(machineNum); |
30 m_impl->init(); | 31 m_impl->init(); |
32 | |
33 symtb = new SymTable; | |
34 symtb->init(); | |
31 } | 35 } |
32 | 36 |
33 /** | 37 /** |
34 * @param command Task executes method number | 38 * @param command Task executes method number |
35 * @param in_size Size of data | 39 * @param in_size Size of data |
62 void | 66 void |
63 TaskManager::run(void) | 67 TaskManager::run(void) |
64 { | 68 { |
65 m_impl->run(); | 69 m_impl->run(); |
66 } | 70 } |
71 | |
72 /** | |
73 * initialize task だから(?)、 | |
74 * read/write/post/func はなしって最初から決めうちだけど | |
75 * いいのかな。いいのか? | |
76 */ | |
77 void | |
78 TaskManager::set_init_task(const char *sym) | |
79 { | |
80 HTaskPtr init; | |
81 int init_fd; | |
82 | |
83 init_fd = open(sym); | |
84 init = m_impl->create_task(init_fd, 0, 0, 0, 0); | |
85 run_task(init); | |
86 } | |
87 | |
88 | |
89 | |
90 // ここは、バイナリから自動的に読めるとうれしいけど | |
91 // どうやるんだろうね。ユーザに追加させるのはめんどくさい | |
92 void | |
93 TaskManager::set_symbol(const char *sym, void *addr) | |
94 { | |
95 symtb->set_symbol(sym, addr); | |
96 } | |
97 | |
98 /** | |
99 * open というか、今は topen (task open) ? 違うな | |
100 */ | |
101 int | |
102 TaskManager::open(const char *sym) | |
103 { | |
104 return symtb->get_fd(sym); | |
105 } | |
106 | |
107 void* | |
108 TaskManager::get_address(int fd) | |
109 { | |
110 return symtb->get_address(fd); | |
111 } |