comparison TaskManager/kernel/schedule/SchedTaskList.cc @ 708:56487849ea2d

cleean up SchedTasks.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 15 Dec 2009 10:49:30 +0900
parents 6d497c098455
children 8ab63ded2c3f
comparison
equal deleted inserted replaced
707:cfca6511aac5 708:56487849ea2d
16 * @param[in] next_list がメインメモリのアドレスか、 16 * @param[in] next_list がメインメモリのアドレスか、
17 * SPE で生成されたアドレスかのフラグ 17 * SPE で生成されたアドレスかのフラグ
18 * SPE で生成されている場合、DMA の必要は無い 18 * SPE で生成されている場合、DMA の必要は無い
19 * 0: メインメモリ, 1: SPE 19 * 0: メインメモリ, 1: SPE
20 */ 20 */
21 SchedTaskList*
22 createSchedTaskList(memaddr next_list, Scheduler* scheduler, int renew_flag)
23 {
24 SchedTaskList* sched = new SchedTaskList(next_list, scheduler);
25 return sched;
26 }
27 21
28 SchedTaskList::SchedTaskList(memaddr addr, Scheduler *sched) 22 SchedTaskList::SchedTaskList(memaddr addr, Scheduler *sched)
29 { 23 {
30 params_addr = addr; 24 params_addr = addr;
31 list = NULL; 25 list = NULL;
32 scheduler = sched; 26 scheduler = sched;
27 cur_index = 0;
33 28
34 } 29 }
35 30
36 31
37 void 32 void
42 list = scheduler->get_curListBuf(); 37 list = scheduler->get_curListBuf();
43 scheduler->dma_load(list, params_addr, 38 scheduler->dma_load(list, params_addr,
44 sizeof(TaskList), DMA_READ_TASKLIST); 39 sizeof(TaskList), DMA_READ_TASKLIST);
45 } 40 }
46 41
47 SchedTaskBase* 42 void
48 SchedTaskList::next(Scheduler *scheduler, SchedTaskBase *p) 43 SchedTaskList::exec() {}
44
45 void
46 SchedTaskList::write()
49 { 47 {
50 SchedTaskBase *nextSched;
51
52 __debug("[SchedTaskList:%s]\n", __FUNCTION__); 48 __debug("[SchedTaskList:%s]\n", __FUNCTION__);
53 49
54 scheduler->dma_wait(DMA_READ_TASKLIST); 50 scheduler->dma_wait(DMA_READ_TASKLIST);
55 if (list->length < 1) {
56 nextSched = new SchedNop2Ready(scheduler);
57 } else {
58 #ifdef SIMPLE_TASK
59 SimpleTaskPtr nextTask = &list->tasks[0];
60 #else
61 TaskPtr nextTask = &list->tasks[0];
62 #endif
63 nextSched = createSchedTask(scheduler, nextTask);
64 ((SchedTask*)nextSched)->init(list, nextTask, 1, scheduler);
65 #ifdef SIMPLE_TASK
66 if (nextTask->command==TaskArray1) {
67 // compatibility
68 return new SchedTaskArray(scheduler, nextSched);
69 }
70 if (nextTask->command==TaskArray) {
71 // Start Task Array
72 return (SchedTaskBase*)(new SchedTaskArrayLoad(scheduler, nextSched));
73 }
74 #endif
75 }
76
77 return nextSched;
78 } 51 }
79 52
53
80 /* end */ 54 /* end */