annotate TaskManager/kernel/schedule/SchedTask.h @ 1258:ee938477af88 draft

add explanation
author Daichi Toma <toma@cr.ie.u-ryukyu.ac.jp>
date Sat, 19 Nov 2011 07:38:48 +0900
parents a49c02dffe6f
children ff721740df6b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
1 #ifndef INCLUDED_SCHED_TASK
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
2 #define INCLUDED_SCHED_TASK
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
3
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
4 #include "base.h"
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
5 #include "Scheduler.h"
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
6 #include "SchedTaskBase.h"
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
7 #include "ListData.h"
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
8 #include "HTask.h"
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
9 #include "MemList.h"
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
10
634
62e570ac5db2 SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 631
diff changeset
11
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
12 class SchedTask : public SchedTaskBase {
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
13 public:
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
14 /* constructor */
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
15 SchedTask();
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
16 virtual ~SchedTask();
88
504899860e66 *** empty log message ***
gongo
parents: 82
diff changeset
17
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
18 BASE_NEW_DELETE(SchedTask);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
19
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
20 /* variables */
708
d41c62201b1e cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 705
diff changeset
21
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
22 /* functions */
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
23
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
24 // override
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
25 void read();
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
26 void exec();
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
27 void write();
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
28 SchedTaskBase* next(Scheduler *, SchedTaskBase *);
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
29
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 463
diff changeset
30 // タスクの処理は、task_list に登録された C の関数によっておこなう
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
31
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
32 public:
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
33 /* functions */
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
34
688
77c89477daa8 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 674
diff changeset
35 void init(TaskListPtr _list, SimpleTaskPtr _task, int index,
972
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 941
diff changeset
36 Scheduler* sc, int tag);
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
37
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
38 //--- User API ---
634
62e570ac5db2 SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 631
diff changeset
39 int read_size() { return task->r_size; }
62e570ac5db2 SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 631
diff changeset
40 int write_size() { return task->w_size; }
62e570ac5db2 SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 631
diff changeset
41 void set_write_size(int w) { task->w_size = w; }
1099
3b3b535baa51 add resize wbuff example.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
42 void setup_outputData();
713
97adb3fe85c6 remove SIMPLE_TASK conditional
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
43
798
2d919c3201f2 virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
44 void* get_input(void *buff, int index);
2d919c3201f2 virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
45 void* get_output(void *buff, int index);
2d919c3201f2 virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
46 memaddr get_param(int index);
625
94d82f2c842f 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
47 memaddr get_inputAddr(int index);
94d82f2c842f 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
48 memaddr get_outputAddr(int index);
538
5641d121818e code_load in read()
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
49 // 書き出しを追加する API がない...
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
50 int get_inputSize(int index);
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
51 int get_outputSize(int index);
641
0605f27ba7d9 Regression on Mac OS X
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
52
1099
3b3b535baa51 add resize wbuff example.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
53 void set_outputSize(int index, int size);
3b3b535baa51 add resize wbuff example.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
54
641
0605f27ba7d9 Regression on Mac OS X
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
55 int get_cpuid();
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
56
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
57 void* global_alloc(int id, int size);
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
58 void* global_get(int id);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
59 void global_set(int id, void *addr);
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
60 void global_free(int id);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
61 MemList* createMemList(int size, int count);
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
62
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
63 void mainMem_alloc(int id, int size);
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
64 void mainMem_wait();
631
30dd8a3deb4a Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
65 memaddr mainMem_get(int id);
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
66
387
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
67 MemorySegment * get_segment(memaddr addr, MemList *m);
1173
cce350bed940 add MemIterator. (no test)
Yutaka_Kinjyo
parents: 1156
diff changeset
68 MemorySegment * get_free_segment(memaddr addr, MemList *m);
1175
d7486d6a5e37 minor change
Yutaka_Kinjyo
parents: 1173
diff changeset
69 void overwrite_segment(MemorySegment *s, memaddr addr);
1213
a49c02dffe6f DMA connector reogranization
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1175
diff changeset
70 // uint32 get_tag();
387
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
71 void put_segment(MemorySegment *s);
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
72 void wait_segment(MemorySegment *s);
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
73
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
74
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
75
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
76 void *allocate(int size);
708
d41c62201b1e cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 705
diff changeset
77 void free_(void *p) ;
941
fc6cfaae6de7 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 932
diff changeset
78 void free_htask(HTask *p) ;
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
79
833
577bde5d0cec poling (may recurse..)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
80 void polling();
577bde5d0cec poling (may recurse..)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
81
538
5641d121818e code_load in read()
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
82 /* これは禁止するべき */
625
94d82f2c842f 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
83 void dma_load(void *buf, memaddr addr, uint32 size, uint32 mask);
94d82f2c842f 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
84 void dma_store(void *buf,memaddr addr, uint32 size, uint32 mask);
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
85 void dma_wait(uint32 mask);
674
07351a5a51c9 fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
86
334
7bc5cbc5fe04 [in test_render] push L key , call show_dma_wait, but incomplete.
e065746@localhost.localdomain
parents: 316
diff changeset
87 void show_dma_wait();
672
27fec8c70c9c add profiling code
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 643
diff changeset
88 void start_profile();
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
89
674
07351a5a51c9 fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
90
310
364abe879376 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
91 /*!
364abe879376 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
92 SPU用の get_input, get_output
364abe879376 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
93 */
364abe879376 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
94 void* get_input(int index) {
483
5f4ffff2c2aa renew task worked. but not test_nogl...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
95 return get_input(readbuf, index);
310
364abe879376 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
96 }
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
97
310
364abe879376 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
98 void* get_output(int index) {
483
5f4ffff2c2aa renew task worked. but not test_nogl...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
99 return get_output(writebuf, index);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
100 }
466
c73aff02db67 prohibit global variable in Task....
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
101
932
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
102 /**
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
103 * swap read / write buffer
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
104 * output が read buffer の書き換えならば、memcpy せずに
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
105 * swap するだけで良い。size は同じである必要がある。
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
106 */
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
107 void swap() {
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
108 void * tmp = readbuf;
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
109 readbuf = writebuf;
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
110 writebuf = tmp;
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
111 }
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
112
53ad3a61b40b sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
113
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
114 // user
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
115 HTaskPtr create_task(int cmd);
634
62e570ac5db2 SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 631
diff changeset
116 HTaskPtr create_task(int cmd, memaddr r, long rs, memaddr w, long ws);
805
583f348e3c5b add word_count_run16array
yutaka@localhost.localdomain
parents: 804
diff changeset
117 HTaskPtr create_task_array(int id, int num_task, int num_param, int num_inData, int num_outData);
634
62e570ac5db2 SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 631
diff changeset
118
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
119 void set_task_depend(HTaskPtr master, HTaskPtr slave);
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
120 void spawn_task(HTaskPtr);
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
121 void set_task_cpu(HTaskPtr, CPU_TYPE);
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
122 void* allocate(int size,int align);
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
123 Scheduler* get_scheduler();
674
07351a5a51c9 fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
124 long get_random();
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
125
466
c73aff02db67 prohibit global variable in Task....
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
126 int printf(const char * format, ...);
c73aff02db67 prohibit global variable in Task....
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
127
899
1b9418af3127 minor fix..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 895
diff changeset
128 } ;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
129
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
130
695
29bd0882272a TaskArray on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 688
diff changeset
131 extern void loadSchedTask(Scheduler *scheduler,TaskPtr task);
302
40db021f6272 working on macosx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 301
diff changeset
132
40db021f6272 working on macosx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 301
diff changeset
133 #endif
308
b85b920628e2 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
134