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