Mercurial > hg > Members > kono > Cerium
comparison TaskManager/kernel/schedule/Scheduler.cc @ 871:ab3cd3aeacff
fix get segment dma tag zero problem
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 04 Jul 2010 16:56:04 +0900 |
parents | daab9cd6f91f |
children | e49c1b29c43d |
comparison
equal
deleted
inserted
replaced
870:79b2d56aa27a | 871:ab3cd3aeacff |
---|---|
107 buffFlag_taskList ^= 1; | 107 buffFlag_taskList ^= 1; |
108 | 108 |
109 return buff_taskList[buffFlag_taskList]; | 109 return buff_taskList[buffFlag_taskList]; |
110 } | 110 } |
111 | 111 |
112 | |
113 void | 112 void |
114 Scheduler::dma_load(void *buf, memaddr addr, uint32 size, uint32 mask) | 113 Scheduler::dma_load(void *buf, memaddr addr, uint32 size, uint32 mask) |
115 { | 114 { |
116 connector->dma_load(buf, addr, size, mask); | 115 connector->dma_load(buf, addr, size, mask); |
117 } | 116 } |
150 memaddr | 149 memaddr |
151 Scheduler::mail_read() | 150 Scheduler::mail_read() |
152 { | 151 { |
153 return connector->mail_read(); | 152 return connector->mail_read(); |
154 } | 153 } |
154 | |
155 | 155 |
156 | 156 |
157 /* | 157 /* |
158 ここから下は、memory 以下にあるべき | 158 ここから下は、memory 以下にあるべき |
159 */ | 159 */ |
212 MemorySegment *s = m->get_segment( | 212 MemorySegment *s = m->get_segment( |
213 task_list[task_id].location, | 213 task_list[task_id].location, |
214 m->code_segment_pool, | 214 m->code_segment_pool, |
215 task_list[task_id].end-task_list[task_id].location); | 215 task_list[task_id].end-task_list[task_id].location); |
216 task_list[task_id].segment = s; | 216 task_list[task_id].segment = s; |
217 #if 0 | |
218 m->printf("loadng task id %d at 0x%x entry 0x%x\n",task_id, | |
219 (unsigned int)(task_list[task_id].segment->data ), | |
220 (unsigned int)( | |
221 (char*)task_list[task_id].segment->data + | |
222 task_list[task_id].entry_offset)); | |
223 #endif | |
224 } | |
225 | |
226 static void | |
227 null_loader(Scheduler *m, int task_id) | |
228 { | |
229 } | |
230 | |
231 static void | |
232 wait_load(Scheduler *m, int task_id) | |
233 { | |
234 #if 0 | |
235 MemorySegment *s = task_list[task_id].segment; | |
236 if (s) | |
237 m->printf("wait load task id %d 0x%x\n",task_id,(int)s->data); | |
238 else | |
239 m->printf("wait load task id %d 000000\n",task_id); | |
240 #endif | |
241 // wait for code segment load | |
242 m->wait_segment(task_list[task_id].segment); | |
243 // calcurate call address | 217 // calcurate call address |
244 TaskObjectRun run = | 218 TaskObjectRun run = |
245 (TaskObjectRun)( | 219 (TaskObjectRun)( |
246 (char*)task_list[task_id].segment->data + | 220 (char*)task_list[task_id].segment->data + |
247 task_list[task_id].entry_offset); | 221 task_list[task_id].entry_offset); |
248 task_list[task_id].run = run; | 222 task_list[task_id].run = run; |
249 #if 0 | 223 #if 0 |
224 m->printf("loadng task id %d at 0x%x entry 0x%x\n",task_id, | |
225 (unsigned int)(task_list[task_id].segment->data ), | |
226 (unsigned int)( | |
227 (char*)task_list[task_id].segment->data + | |
228 task_list[task_id].entry_offset)); | |
229 #endif | |
230 } | |
231 | |
232 static void | |
233 null_loader(Scheduler *m, int task_id) | |
234 { | |
235 } | |
236 | |
237 static void | |
238 wait_load(Scheduler *m, int task_id) | |
239 { | |
240 #if 0 | |
241 MemorySegment *s = task_list[task_id].segment; | |
242 if (s) | |
243 m->printf("wait load task id %d 0x%x\n",task_id,(int)s->data); | |
244 else | |
245 m->printf("wait load task id %d 000000\n",task_id); | |
246 #endif | |
247 // wait for code segment load | |
248 m->wait_segment(task_list[task_id].segment); | |
249 #if 0 | |
250 m->printf("wait load task id %d done. creator = 0x%x entry_offset = 0x%x\n",task_id, | 250 m->printf("wait load task id %d done. creator = 0x%x entry_offset = 0x%x\n",task_id, |
251 (unsigned int)run, | 251 (unsigned int)(task_list[task_id].run), |
252 task_list[task_id].entry_offset); | 252 task_list[task_id].entry_offset); |
253 #endif | 253 #endif |
254 } | 254 } |
255 | 255 |
256 static void | 256 static void |