annotate TaskManager/kernel/schedule/SchedTask.h @ 941:0c11c2fd7e63

add no_auto_free flag on HTask
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 31 Jul 2010 17:50:38 +0900
parents f4d7cf77ec3d
children d093d601fc14
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
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
4 #include "base.h"
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
5 #include "Scheduler.h"
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
6 #include "SchedTaskBase.h"
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
7 #include "ListData.h"
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
8 #include "HTask.h"
373
eab18aa0c7f6 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
9 #include "MemList.h"
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
10
634
0558abba673c SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 629
diff changeset
11
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
12 class SchedTask : public SchedTaskBase {
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
13 public:
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
14 /* constructor */
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
15 SchedTask();
2ac66db4dd11 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
5c194c71eca8 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
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
20 /* variables */
708
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 705
diff changeset
21
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
22 /* functions */
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
23
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
24 // override
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
25 void read();
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
26 void exec();
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
27 void write();
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
28 SchedTaskBase* next(Scheduler *, SchedTaskBase *);
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
29
464
01b321c86747 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 463
diff changeset
30 // タスクの処理は、task_list に登録された C の関数によっておこなう
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
31
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
32 public:
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
33 /* functions */
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
34
683
9a6cb2439593 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 674
diff changeset
35 void init(TaskListPtr _list, SimpleTaskPtr _task, int index,
9a6cb2439593 on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 674
diff changeset
36 Scheduler* sc);
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
37
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
38 //--- User API ---
634
0558abba673c SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 629
diff changeset
39 int read_size() { return task->r_size; }
0558abba673c SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 629
diff changeset
40 int write_size() { return task->w_size; }
0558abba673c SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 629
diff changeset
41 void set_write_size(int w) { task->w_size = w; }
713
f725c6455d19 remove SIMPLE_TASK conditional
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
42
798
30f84915713b virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
43 void* get_input(void *buff, int index);
30f84915713b virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
44 void* get_output(void *buff, int index);
30f84915713b virtual clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 797
diff changeset
45 memaddr get_param(int index);
625
60aa3f241b10 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
46 memaddr get_inputAddr(int index);
60aa3f241b10 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
47 memaddr get_outputAddr(int index);
506
1d4a8a86f26b code_load in read()
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
48 // 書き出しを追加する API がない...
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
49 int get_inputSize(int index);
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
50 int get_outputSize(int index);
641
0692b08f1cd6 Regression on Mac OS X
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
51
0692b08f1cd6 Regression on Mac OS X
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
52 int get_cpuid();
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
53
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
54 void* global_alloc(int id, int size);
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
55 void* global_get(int id);
373
eab18aa0c7f6 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
56 void global_set(int id, void *addr);
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
57 void global_free(int id);
373
eab18aa0c7f6 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
58 MemList* createMemList(int size, int count);
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
59
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
60 void mainMem_alloc(int id, int size);
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
61 void mainMem_wait();
629
8843edf37c0e Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
62 memaddr mainMem_get(int id);
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
63
387
5e2d30bfbf23 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
64 MemorySegment * get_segment(memaddr addr, MemList *m);
5e2d30bfbf23 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
65 uint32 get_tag();
5e2d30bfbf23 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
66 void put_segment(MemorySegment *s);
5e2d30bfbf23 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
67 void wait_segment(MemorySegment *s);
5e2d30bfbf23 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
68
5e2d30bfbf23 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
69
5e2d30bfbf23 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
70
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
71 void *allocate(int size);
708
56487849ea2d cleean up SchedTasks.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 705
diff changeset
72 void free_(void *p) ;
941
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 932
diff changeset
73 void free_htask(HTask *p) ;
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
74
832
29094b48d966 poling (may recurse..)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 806
diff changeset
75 void polling();
29094b48d966 poling (may recurse..)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 806
diff changeset
76
506
1d4a8a86f26b code_load in read()
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
77 /* これは禁止するべき */
625
60aa3f241b10 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
78 void dma_load(void *buf, memaddr addr, uint32 size, uint32 mask);
60aa3f241b10 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
79 void dma_store(void *buf,memaddr addr, uint32 size, uint32 mask);
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
80 void dma_wait(uint32 mask);
674
bde5f13adf10 fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
81
334
20f2459041cb [in test_render] push L key , call show_dma_wait, but incomplete.
e065746@localhost.localdomain
parents: 316
diff changeset
82 void show_dma_wait();
672
3b6290c05f9f add profiling code
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 643
diff changeset
83 void start_profile();
373
eab18aa0c7f6 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
84
674
bde5f13adf10 fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
85
310
c59d8927c4d1 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
86 /*!
c59d8927c4d1 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
87 SPU用の get_input, get_output
c59d8927c4d1 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
88 */
c59d8927c4d1 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
89 void* get_input(int index) {
483
0b933bef0328 renew task worked. but not test_nogl...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
90 return get_input(readbuf, index);
310
c59d8927c4d1 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
91 }
373
eab18aa0c7f6 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
92
310
c59d8927c4d1 remove smanager
e065746@localhost.localdomain
parents: 308
diff changeset
93 void* get_output(int index) {
483
0b933bef0328 renew task worked. but not test_nogl...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
94 return get_output(writebuf, index);
373
eab18aa0c7f6 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
95 }
466
4fa8760e18c2 prohibit global variable in Task....
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
96
932
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
97 /**
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
98 * swap read / write buffer
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
99 * output が read buffer の書き換えならば、memcpy せずに
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
100 * swap するだけで良い。size は同じである必要がある。
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
101 */
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
102 void swap() {
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
103 void * tmp = readbuf;
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
104 readbuf = writebuf;
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
105 writebuf = tmp;
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
106 }
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
107
f4d7cf77ec3d sort test (add swap())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
108
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
109 // user
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
110 HTaskPtr create_task(int cmd);
634
0558abba673c SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 629
diff changeset
111 HTaskPtr create_task(int cmd, memaddr r, long rs, memaddr w, long ws);
806
32584e896fe7 add word_count_run16array
yutaka@localhost.localdomain
parents: 805
diff changeset
112 HTaskPtr create_task_array(int id, int num_task, int num_param, int num_inData, int num_outData);
634
0558abba673c SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 629
diff changeset
113
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
114 void set_task_depend(HTaskPtr master, HTaskPtr slave);
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
115 void spawn_task(HTaskPtr);
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
116 void set_task_cpu(HTaskPtr, CPU_TYPE);
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
117 void* allocate(int size,int align);
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
118 Scheduler* get_scheduler();
674
bde5f13adf10 fix many task example (sort).
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
119 long get_random();
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
120
466
4fa8760e18c2 prohibit global variable in Task....
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
121 int printf(const char * format, ...);
4fa8760e18c2 prohibit global variable in Task....
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
122
899
586b4f825f24 minor fix..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 895
diff changeset
123 } ;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 105
diff changeset
124
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
125
695
cbcf0182635e TaskArray on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 683
diff changeset
126 extern void loadSchedTask(Scheduler *scheduler,TaskPtr task);
302
b0d37afab06a working on macosx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 301
diff changeset
127
b0d37afab06a working on macosx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 301
diff changeset
128 #endif
308
2ac66db4dd11 remove SchedTaskImpl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 306
diff changeset
129