annotate TaskManager/kernel/schedule/SchedTask.cc @ 180:5cde66c926b4

いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
author gongo@localhost.localdomain
date Mon, 22 Dec 2008 16:09:57 +0900
parents 5c194c71eca8
children df3cfc04e796
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
1 #include <stdlib.h>
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
2 #include <string.h>
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
3 #include "SchedTask.h"
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
4 #include "SchedTaskList.h"
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
5 #include "SchedNop2Ready.h"
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
6 #include "DmaManager.h"
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
7 #include "error.h"
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
8 #include "TaskManager.h"
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
9
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
10 extern Scheduler::TaskObject task_list[MAX_TASK_OBJECT];
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
11
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
12 SchedTask*
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
13 CreateSchedTask(TaskListPtr taskList, Scheduler *sched)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
14 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
15 TaskPtr task = &taskList->tasks[sched->curIndex_taskList++];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
16
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
17 return task_list[task->command](taskList, task, sched->get_curReadBuf(),
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
18 sched->get_curWriteBuf(), sched);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
19 }
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
20
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
21 SchedTask::SchedTask(TaskListPtr _list, TaskPtr _task, ListDataPtr rbuf,
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
22 ListDataPtr wbuf, Scheduler* sc)
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
23 {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
24 __list = _list;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
25 __task = _task;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
26 __inListData = rbuf;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
27 __outListData = wbuf;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
28 __readbuf = NULL;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
29 __writebuf = NULL;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
30 __scheduler = sc;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
31 __taskGroup = NULL;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
32 __renew_flag = 0;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
33
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
34 smanager = new STaskManager(this);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
35 }
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
36
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
37 SchedTask::~SchedTask(void)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
38 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
39 if (__flag_renewTask) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
40 /**
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
41 * __inListData __outListData ϥȤΤΤʤΤ
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
42 * ä¨ free 롣
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
43 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
44 free(__inListData);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
45 free(__outListData);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
46
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
47 /**
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
48 * __list != NULL ξ硢
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
49 * Task __list κǸ Task ˤʤΤ (SchedTask::next )
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
50 * Υߥ󥰤 __list
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
51 * (free Ϥ륢ɥ쥹ΤȤʤ)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
52 * ʳ Task Ǥʤ
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
53 * __list == NULL ʤΤǡfree ϤƤ̵
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
54 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
55 free(__list);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
56 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
57
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
58 delete smanager;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
59 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
60
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
61 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
62 SchedTask::__init__(void)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
63 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
64 /**
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
65 * task->inData task->outData
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
66 * PPE ΤΤSPE ΤΤä
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
67 * ɥ쥹ȽǤгڤˤʤȻפ
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
68 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
69 if (__flag_renewTask == 0) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
70 __scheduler->dma_load(__inListData, (uint32)__task->inData,
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
71 sizeof(ListData), DMA_READ_IN_LIST);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
72 __scheduler->dma_load(__outListData, (uint32)__task->outData,
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
73 sizeof(ListData), DMA_READ_OUT_LIST);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
74
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
75 __taskGroup = new TaskGroup;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
76 __taskGroup->command = __task->self;
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
77
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
78 ex_read = &SchedTask::ex_read_normal;
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
79 ex_exec = &SchedTask::ex_exec_normal;
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
80 ex_write = &SchedTask::ex_write_normal;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
81 } else {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
82 __inListData = __task->inData;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
83 __outListData = __task->outData;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
84 __taskGroup = (TaskGroupPtr)__task->self;
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
85
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
86 ex_read = &SchedTask::ex_read_renew;
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
87 ex_exec = &SchedTask::ex_exec_renew;
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
88 ex_write = &SchedTask::ex_write_renew;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
89 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
90 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
91
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
92
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
93 /**
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
94 * [Todo]
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
95 * ǡɤ߹߾ readbuf ǤϤʤ
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
96 * 桼ȤǷ褦ˤʤȤ⤷ʤ
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
97 *
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
98 * # TaskManager ˾äȤʤ
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
99 * # 桼 SPE ˻³뤳ȤǤ뤿ᡣ
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
100 * # ϥ桼Ǥ櫓
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
101 */
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
102 void
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
103 SchedTask::read(void)
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
104 {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
105 __debug("[SchedTask:%s]\n", __FUNCTION__);
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
106
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
107 // wait for load inListData
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
108 __scheduler->dma_wait(DMA_READ_IN_LIST);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
110 // ɤǡĤʤ̵
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
111 if (__inListData->length < 1 || __inListData->size == 0) return;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
112
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
113 // load Input Data
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
114 __readbuf = __scheduler->allocate(__inListData->size);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
115 __scheduler->dma_loadList(__inListData, __readbuf, DMA_READ);
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
116
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
117 (this->*ex_read)();
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
118 }
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
119
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
120 void
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
121 SchedTask::exec(void)
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
122 {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
123 __debug("[SchedTask:%s]\n", __FUNCTION__);
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
124
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
125 // wait for load outListData
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
126 __scheduler->dma_wait(DMA_READ_OUT_LIST);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
127 __writebuf = __scheduler->allocate(__outListData->size);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
128
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
129 __debug(" task->command = %d\n", __task->command);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
130 __debug(" task->in_size = %d\n", __task->in_size);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
131 __debug(" task->in_addr = 0x%x\n", __task->in_addr);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
132 __debug(" task->out_addr = 0x%x\n", __task->out_addr);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
133 __debug(" list->next = 0x%x\n", (unsigned int)__list->next);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
134 __debug(" list->length = 0x%x\n", (unsigned int)__list->length);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
135
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
136 __scheduler->dma_wait(DMA_READ);
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
137
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
138 run(__readbuf, __writebuf);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
139
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
140 free(__readbuf);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
141
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
142 if (__taskGroup->status() != 0) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
143 __task->self = __taskGroup->command;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
144 delete __taskGroup;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
145 __taskGroup = NULL;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
146 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
147
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
148 // 񤭹ΰ褬פʤ̵
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
149 if (__outListData->size > 0 || __outListData->length > 0) {
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
150 __scheduler->dma_storeList(__outListData, __writebuf, DMA_WRITE);
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
151 // SchedTask::write(void) Ǥ wait ݤƤɡ
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
152 // ºݤˤϤ wait ʤȤȽ񤭹ޤƤʤ
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
153 // wait ϤƤϤʤʡ
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
154 __scheduler->dma_wait(DMA_WRITE);
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
155 }
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
156
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
157 (this->*ex_exec)();
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
158 }
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
159
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
160 void
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
161 SchedTask::write(void)
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
162 {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
163 __debug("[SchedTask:%s]\n", __FUNCTION__);
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
164
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
165 //__scheduler->dma_wait(DMA_WRITE);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
166 free(__writebuf);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
167
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
168 /**
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
169 * ΥSPE줿
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
170 * ΥνλԤɬפϤʤȤ꤬Ƥ뤿ᡢ
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
171 * (wait_task() ƤФƤʤ)
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
172 * ǽλ롣ex_write ϼ¹Ԥʤ
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
173 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
174 if (__task->self == MY_SPE_NOP) return;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
175
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
176 (this->*ex_write)();
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
177 }
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
178
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
179 /**
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
180 * PPE 줿 ex_read()
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
181 */
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
182 void
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
183 SchedTask::ex_read_normal(void)
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
184 {
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
185 }
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
186
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
187 /**
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
188 * SPE 줿 ex_read()
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
189 */
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
190 void
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
191 SchedTask::ex_read_renew(void)
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
192 {
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
193 }
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
194
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
195 /**
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
196 * PPE 줿 ex_exec()
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
197 */
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
198 void
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
199 SchedTask::ex_exec_normal(void)
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
200 {
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
201 }
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
202
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
203 /**
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
204 * SPE 줿 ex_exec()
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
205 */
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
206 void
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
207 SchedTask::ex_exec_renew(void)
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
208 {
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
209 }
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
210
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
211
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
212
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
213 /**
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
214 * PPE 줿 ex_write()
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
215 *
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
216 * Υǿ˥졢
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
217 * ĤΥνλԤɬפ硢
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
218 * PPE ˽λȤΤ餻ʤ(command ʤ)
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
219 */
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
220 void
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
221 SchedTask::ex_write_normal(void)
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
222 {
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
223 /**
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
224 * Υǿ˥ʤä
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
225 * or 줿ΥνλԤɬפ̵
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
226 */
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
227 if (__renew_flag == 0) {
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
228 __scheduler->mail_write(__task->self);
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
229 }
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
230 }
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
231
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
232 /**
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
233 * SPE 줿 ex_write()
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
234 *
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
235 * A <- ƥ
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
236 * | \
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
237 * B C <- SPE 줿
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
238 *
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
239 * A SPE B, C Ȥ롣
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
240 * B C λ顢A PPE Ϥäޥɤ
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
241 * ҥ˰ѤƤΤǡǸ˼¹Ԥ줿ҥ
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
242 * PPE mail 롣
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
243 */
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
244 void
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
245 SchedTask::ex_write_renew(void)
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
246 {
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
247 uint32 cmd;
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
248
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
249 __taskGroup->remove(__task);
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
250 cmd = __taskGroup->status();
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
251
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
252
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
253 // Ǻ줿ƤΥλ
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
254 if (cmd != 0) {
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
255 delete __taskGroup;
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
256 __scheduler->mail_write(cmd);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
257 }
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
258 }
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
259
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
260 SchedTaskBase*
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
261 SchedTask::next(Scheduler *m, SchedTaskBase *p)
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
262 {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
263 __debug("[SchedTask:%s]\n", __FUNCTION__);
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
264
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
265 delete p;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
266
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
267 if (__scheduler->curIndex_taskList < __list->length) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
268 SchedTask* schedTask = CreateSchedTask(__list, __scheduler);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
269 schedTask->__flag_renewTask = this->__flag_renewTask;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
270 schedTask->__init__();
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
271
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
272 /**
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
273 * ͳ SchedTask:~SchedTask()
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
274 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
275 __list = NULL;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
276
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
277 return schedTask;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
278 } else {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
279 uint32 nextList = (uint32)__list->next;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
280
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
281 if (nextList == 0) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
282 return new SchedNop2Ready(__scheduler);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
283 } else {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
284 return new SchedTaskList(nextList, __scheduler);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
285 }
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
286 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
287 }
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
288
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
289 /**
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
290 * task->add_input Ϳ줿֤б index (0n-1) ǡ
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
291 * buffer бǡ֤
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
292 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
293 void*
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
294 SchedTask::get_input(void *buff, int index)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
295 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
296 if (buff != NULL) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
297 return (void*)((int)buff + __inListData->bound[index]);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
298 } else {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
299 return NULL;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
300 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
301 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
302
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
303 /**
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
304 * write buffer ΰ֤
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
305 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
306 void*
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
307 SchedTask::get_output(void *buff, int index)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
308 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
309 if (buff != NULL) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
310 return (void*)((int)buff + __outListData->bound[index]);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
311 } else {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
312 return NULL;
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
313 }
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
314 }
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
315
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
316 int
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
317 SchedTask::get_param(int index)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
318 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
319 return __task->param[index];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
320 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
321
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
322 TaskPtr
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
323 SchedTask::create_task(int cmd)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
324 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
325 TaskListPtr taskList = __scheduler->get_renewListBuf();
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
326 TaskPtr p = &taskList->tasks[taskList->length++];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
327 p->command = cmd;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
328
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
329 p->inData = (ListData*)__scheduler->allocate(sizeof(ListData));
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
330 p->outData = (ListData*)__scheduler->allocate(sizeof(ListData));
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
331
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
332 p->inData->clear();
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
333 p->outData->clear();
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
334
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
335 p->self = MY_SPE_NOP;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
336 p->param_size = 0;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
337
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
338 return p;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
339 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
340
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
341 /**
180
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
342 * λƤ顢ᥤ󥹥塼(PPE)
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
343 * λݤΤ餻롣
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
344 *
5cde66c926b4 いろいろ fix 。詳しくは TaskManager/Changelog、test_render/Changelog を
gongo@localhost.localdomain
parents: 109
diff changeset
345 * @param[in] waitTask
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
346 */
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
347 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
348 SchedTask::wait_task(TaskPtr waitTask)
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
349 {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
350 waitTask->self = (uint32)__taskGroup;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
351
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
352 __scheduler->add_groupTask(__taskGroup, waitTask);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
353
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
354 __renew_flag++;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
355 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
356
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
357 void*
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
358 SchedTask::global_alloc(int id, int size) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
359 return __scheduler->global_alloc(id, size);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
360 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
361
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
362 void*
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
363 SchedTask::global_get(int id) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
364 return __scheduler->global_get(id);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
365 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
366
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
367 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
368 SchedTask::global_free(int id) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
369 __scheduler->global_free(id);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
370 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
371
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
372 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
373 SchedTask::mainMem_alloc(int id, int size) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
374 __scheduler->mainMem_alloc(id, size);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
375 }
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
376
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
377 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
378 SchedTask::mainMem_wait(void) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
379 __scheduler->mainMem_wait();
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
380 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
381
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
382 void*
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
383 SchedTask::mainMem_get(int id) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
384 return __scheduler->mainMem_get(id);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
385 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
386
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
387 void*
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
388 SchedTask::allocate(int size) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
389 return __scheduler->allocate(size);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
390 }
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
391
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
392 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
393 SchedTask::dma_load(void *buf, uint32 addr, uint32 size, uint32 mask) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
394 __scheduler->dma_load(buf, addr, size, mask);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
395 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
396
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
397 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
398 SchedTask::dma_store(void *buf,uint32 addr, uint32 size, uint32 mask) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
399 __scheduler->dma_store(buf, addr, size, mask);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
400 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
401
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
402 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
403 SchedTask::dma_wait(uint32 mask) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
404 __scheduler->dma_wait(mask);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
405 }