comparison TaskManager/kernel/schedule/Scheduler.cc @ 464:01b321c86747

task run is mere C function now.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 30 Sep 2009 10:12:26 +0900
parents 942f451341a4
children bd5b93d39597
comparison
equal deleted inserted replaced
463:bc5b3d327083 464:01b321c86747
365 else 365 else
366 fprintf(stderr,"wait load task id %d 000000\n",task_id); 366 fprintf(stderr,"wait load task id %d 000000\n",task_id);
367 // wait for code segment load 367 // wait for code segment load
368 m->wait_segment(task_list[task_id].segment); 368 m->wait_segment(task_list[task_id].segment);
369 // calcurate call address 369 // calcurate call address
370 TaskObjectCreator creator = 370 TaskObjectRun run =
371 (TaskObjectCreator)( 371 (TaskObjectRun)(
372 (char*)task_list[task_id].segment->data + 372 (char*)task_list[task_id].segment->data +
373 task_list[task_id].entry_offset); 373 task_list[task_id].entry_offset);
374 task_list[task_id].creator = creator; 374 task_list[task_id].run = run;
375 fprintf(stderr,"wait load task id %d done. creator = 0x%x entry_offset = 0x%x\n",task_id, 375 fprintf(stderr,"wait load task id %d done. creator = 0x%x entry_offset = 0x%x\n",task_id,
376 (unsigned int)creator, 376 (unsigned int)run,
377 task_list[task_id].entry_offset); 377 task_list[task_id].entry_offset);
378 } 378 }
379 379
380 static void 380 static void
381 null_waiter(Scheduler *m, int task_id) 381 null_waiter(Scheduler *m, int task_id)
382 { 382 {
383 } 383 }
384 384
385 extern void 385 extern void
386 register_task(int cmd, TaskObjectCreator creator) 386 register_task(int cmd, TaskObjectRun run)
387 { 387 {
388 task_list[cmd].creator = creator; 388 task_list[cmd].run = run;
389 task_list[cmd].load = null_loader; 389 task_list[cmd].load = null_loader;
390 task_list[cmd].wait = null_waiter; 390 task_list[cmd].wait = null_waiter;
391 } 391 }
392 392
393 extern void 393 extern void
394 register_dynamic_task(int cmd, 394 register_dynamic_task(int cmd,
395 memaddr start, int size, 395 memaddr start, int size,
396 TaskObjectCreator creator, int entry_offset) 396 TaskObjectRun run, int entry_offset)
397 { 397 {
398 task_list[cmd].creator = creator; 398 task_list[cmd].run = run;
399 task_list[cmd].location = start; 399 task_list[cmd].location = start;
400 size &= 0xfffffffe; 400 size &= 0xfffffffe;
401 task_list[cmd].end = start+size; 401 task_list[cmd].end = start+size;
402 task_list[cmd].entry_offset = entry_offset; 402 task_list[cmd].entry_offset = entry_offset;
403 task_list[cmd].load = load_task; 403 task_list[cmd].load = load_task;