Mercurial > hg > Members > kono > Cerium
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 */ |