annotate TaskManager/kernel/schedule/Scheduler.h @ 1479:163220e54cc0 draft

remove hard code for TaskLog
author Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
date Tue, 24 Jul 2012 17:15:15 +0900
parents e8db2e2d426c
children f402f6444237
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_SCHEDULER
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
2 #define INCLUDED_SCHEDULER
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
3
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
4 #include <stdlib.h>
736
1b225972ae88 cut printf
hiroki@localhost.localdomain
parents: 713
diff changeset
5 #include <stdarg.h>
301
7f991471d43f remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 298
diff changeset
6 #include "base.h"
7f991471d43f remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 298
diff changeset
7 #include "TaskList.h"
7f991471d43f remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 298
diff changeset
8 #include "ListData.h"
7f991471d43f remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 298
diff changeset
9 #include "DmaManager.h"
7f991471d43f remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 298
diff changeset
10 #include "SchedTaskBase.h"
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
11 #include "MemList.h"
1435
9f6ba00ca15c add gpu_sched_register
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 1229
diff changeset
12 #include "MemHash.h"
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
13
1435
9f6ba00ca15c add gpu_sched_register
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 1229
diff changeset
14 #ifdef __APPLE__
9f6ba00ca15c add gpu_sched_register
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 1229
diff changeset
15 #include <OpenCL/opencl.h>
9f6ba00ca15c add gpu_sched_register
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 1229
diff changeset
16 #else
9f6ba00ca15c add gpu_sched_register
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 1229
diff changeset
17 #include <CL/cl.h>
9f6ba00ca15c add gpu_sched_register
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 1229
diff changeset
18 #endif
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
19
1135
8142e652ea4c t_dandy move on MacOSX. But, we have to fix MAX_USER_TASK to dynamic load from outside of TaskManager.
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1124
diff changeset
20 #define MAX_USER_TASK 100
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
21 #define MAX_SYSTEM_TASK 2
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
22 #define MAX_TASK_OBJECT MAX_USER_TASK + MAX_SYSTEM_TASK
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
23 #define MAX_GLOBAL_AREA 32
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
24 #define MAX_MAINMEM_AREA 32
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
25
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
26 class SchedTaskBase;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
27 class SchedTask;
184
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents: 109
diff changeset
28 class SchedTaskList;
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
29 class TaskManagerImpl;
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
30 class HTask;
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
31
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
32 typedef int (*TaskObjectRun)(SchedTask* smanager, void* r, void *w);
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
33
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
34 // Task Object Table
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
35 // this is named TaskObjectRun but it is not an object.
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
36 // It is a pointer to an object creation function
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
37 // 大きいので、SPEには置かない方が本当は良い...
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
38 // get_segment で取って来るのが、おそらくは正しい。
887
4860272b2f47 remove run variable to avoid SPU compiler bug from SchedTaskArray::exec().
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 872
diff changeset
39 typedef struct task_object {
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
40 TaskObjectRun run;
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
41 memaddr location; // location address in a.out
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
42 memaddr end;
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
43 uint32 entry_offset; // offset for create();
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
44 MemorySegment *segment;
1435
9f6ba00ca15c add gpu_sched_register
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 1229
diff changeset
45 const char *name;
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
46 void (*load)(Scheduler *,int);
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
47 void (*wait)(Scheduler *,int);
1435
9f6ba00ca15c add gpu_sched_register
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 1229
diff changeset
48 cl_kernel *kernel;
1147
279b41354753 add check code.
Yutaka_Kinjyo
parents: 1135
diff changeset
49 } __attribute__ ((aligned (DEFAULT_ALIGNMENT))) //sizeはどれくらい?
895
b662e9dd26b0 add alignment of classes in SPU
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 887
diff changeset
50 TaskObject, *TaskObjectPtr;
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
51
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
52 extern "C" {
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
53 extern long random();
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
54 }
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
55
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
56 class Scheduler {
836
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
57 private:
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
58 TaskManagerImpl* manager_tmp;
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
59
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
60 public:
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
61 virtual ~Scheduler();
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
62 BASE_NEW_DELETE(Scheduler);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
63
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
64 /* variables */
194
gongo@localhost.localdomain
parents: 187
diff changeset
65 int id;
387
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
66 MemHash *hash;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
67
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
68 // double buffering
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
69 TaskListPtr buff_taskList[2];
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
70
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
71 int buffFlag_taskList;
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
72
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
73 /* GlobalMemoryList */
631
30dd8a3deb4a Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 626
diff changeset
74 /* global among Tasks in the same CPU */
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
75 void* globalList[MAX_GLOBAL_AREA];
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
76
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
77 /* MainMemory Allocate Command List */
631
30dd8a3deb4a Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 626
diff changeset
78 memaddr mainMemList[MAX_MAINMEM_AREA];
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
79
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
80 /* Code Area */
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
81 MemList *code_segment_pool;
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
82
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
83 DmaManager* connector;
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
84 TaskManagerImpl* manager;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
85
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
86
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
87 /* functions */
1479
163220e54cc0 remove hard code for TaskLog
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 1471
diff changeset
88 void init(TaskManagerImpl *m, int useRefDma=0, int export_task_log=0);
1451
7ab643c30a71 fix makefile
yuuhiTOMARI
parents: 1447
diff changeset
89 virtual void run(){};
697
4b6242d03512 TaskArray on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 690
diff changeset
90 void run(SchedTaskBase* task1);
4b6242d03512 TaskArray on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 690
diff changeset
91
1229
424c1f16e704 add args useRefDma
Daichi TOMA <e085740@ie.u-ryukyu.ac.jp>
parents: 1213
diff changeset
92 virtual void init_impl(int useRefDma) {};
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
93 void finish();
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
94
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
95 TaskListPtr get_curListBuf();
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
96 TaskListPtr get_renewListBuf();
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
97
187
gongo@localhost.localdomain
parents: 184
diff changeset
98 void set_backupTaskList(TaskListPtr cur_taskList);
gongo@localhost.localdomain
parents: 184
diff changeset
99 void set_backupTaskListIndex(int cur_index);
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
100 SchedTaskList* get_nextRenewTaskList();
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
101 TaskListPtr get_backupTaskList();
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
102 int get_backupTaskListIndex();
184
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents: 109
diff changeset
103
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
104
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
105 /* GlobalMemory */
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
106 void* global_alloc(int id, int size);
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
107 void* global_get(int id);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
108 void global_set(int id, void *addr);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
109 void global_free(int id);
836
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
110 //MemList* createMemList(int size, int count);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
111 MemList* createMemList(int size, int count);
467
839e34d0cc3c fix all examples. test_render is not working now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
112 void free_(void *p) { free(p); }
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
113
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
114 virtual void mainMem_alloc(int id, int size) {};
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
115 virtual void mainMem_wait() {};
631
30dd8a3deb4a Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 626
diff changeset
116 memaddr mainMem_get(int id);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
117
389
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
118 MemorySegment * get_segment(memaddr addr, MemList *m);
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
119 MemorySegment * get_segment(memaddr addr, MemList *m, int size);
1173
cce350bed940 add MemIterator. (no test)
Yutaka_Kinjyo
parents: 1154
diff changeset
120 MemorySegment * get_free_segment(memaddr addr, MemList *m);
1175
d7486d6a5e37 minor change
Yutaka_Kinjyo
parents: 1173
diff changeset
121 void overwrite_segment(MemorySegment *s, memaddr addr);
1173
cce350bed940 add MemIterator. (no test)
Yutaka_Kinjyo
parents: 1154
diff changeset
122
872
d7b0c0f8514c add overlay segment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 836
diff changeset
123 void allocate_code_segment(int size, int count,struct tbl *table);
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
124
389
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
125 void put_segment(MemorySegment *s);
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
126 void wait_segment(MemorySegment *s);
387
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
127
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
128 /* manager */
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
129
836
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
130 void set_manager(TaskManagerImpl *m) {
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
131 manager = m;
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
132 };
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
133
800
54f0180cea0f run16 word count ( not yet worked. )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 743
diff changeset
134 /* user */
634
62e570ac5db2 SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 631
diff changeset
135
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
136 long get_random() ;
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
137 Scheduler *get_scheduler() { return this; };
736
1b225972ae88 cut printf
hiroki@localhost.localdomain
parents: 713
diff changeset
138 int printf(const char *format, ...);
743
55ccf5f6d9af continue..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 736
diff changeset
139 int vprintf0(const char *format, va_list ap);
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
140
899
1b9418af3127 minor fix..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 895
diff changeset
141 } ;
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
142
1058
d3cb29f1eccb create task_name_list array in Scheduler.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1024
diff changeset
143 extern void register_task(int cmd, TaskObjectRun run, const char *str);
430
4d4443138484 code loading (on going...)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 426
diff changeset
144 extern void register_dynamic_task(int cmd,
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
145 memaddr start, int size, TaskObjectRun run,
1062
f994f5032299 add TaskManagerImpl::get_task_name()
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1058
diff changeset
146 int entry_offset,
1058
d3cb29f1eccb create task_name_list array in Scheduler.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1024
diff changeset
147 const char *str);
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
148
441
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
149 struct tbl {
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
150 unsigned int vma;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
151 unsigned int size;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
152 unsigned int file_offset;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
153 unsigned int buf;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
154 };
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
155
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
156 extern TaskObject task_list[MAX_TASK_OBJECT];
1471
e8db2e2d426c fix not working yet.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1451
diff changeset
157
e8db2e2d426c fix not working yet.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1451
diff changeset
158 int null_run(SchedTask* smanager, void* r, void *w);
e8db2e2d426c fix not working yet.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1451
diff changeset
159 void null_loader(Scheduler *m, int task_id);
e8db2e2d426c fix not working yet.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1451
diff changeset
160
1147
279b41354753 add check code.
Yutaka_Kinjyo
parents: 1135
diff changeset
161 extern int entry_cmd[MAX_TASK_OBJECT];
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
162
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
163 inline void
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
164 loadSchedTask(Scheduler *scheduler,int command)
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
165 {
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
166 task_list[command].load(scheduler,command);
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
167 }
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
168
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
169 #endif
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
170
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
171
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
172
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
173 #define SchedConstructor(str) \
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
174 str() {} \
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
175 BASE_NEW_DELETE(str) \
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
176
468
796f72cb21d9 test_nogl on Mac OS X worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
177 #define SchedDefineTask(str) SchedDefineTask1(str,run) \
796f72cb21d9 test_nogl on Mac OS X worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
178
796f72cb21d9 test_nogl on Mac OS X worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
179 #define SchedDefineTask1(str,run) \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
180 static int run(SchedTask *smanager, void *rbuf, void *wbuf); \
460
433892ba596b fix Scheduler.h
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
181 extern "C" { \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
182 int runTask_##str(SchedTask *smanager, void *rbuf, void *wbuf) \
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
183 { \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
184 return run(smanager, rbuf, wbuf); \
460
433892ba596b fix Scheduler.h
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
185 } \
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
186 }
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
187
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
188 #define SchedExternTask(str) \
460
433892ba596b fix Scheduler.h
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
189 extern "C" { \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
190 extern int runTask_##str(SchedTask *manager, void *rbuf, void *wbuf) ; \
460
433892ba596b fix Scheduler.h
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
191 }
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
192
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
193 #define SchedRegisterTask(cmd, str) \
1058
d3cb29f1eccb create task_name_list array in Scheduler.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1024
diff changeset
194 register_task(cmd, runTask_##str, #str);
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
195
615
184d6d3f0cd9 remove uncessary Task Name definision
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
196 #define SchedRegister(str) \
1058
d3cb29f1eccb create task_name_list array in Scheduler.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1024
diff changeset
197 register_task(str, runTask_##str, #str);
615
184d6d3f0cd9 remove uncessary Task Name definision
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
198
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
199 #define SchedDefineDynamicTask(str,segment) \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
200 SchedDefineTask(str)
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
201
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
202 #ifndef NO_OVERLAY
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
203 #define SchedExternDynamicTask(str,segment) \
441
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
204 extern "C" { \
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
205 extern unsigned long long _EAR_; \
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
206 extern struct tbl _ovly_table[]; \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
207 extern int runTask_##str(SchedTask *manager, void *rbuf, void *wbuf) ; \
441
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
208 }
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
209 #else
439
13c6740ab15f still overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 437
diff changeset
210 #define SchedExternDynamicTask(str,segment) SchedExternTask(str)
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
211 #endif
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
212
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
213
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
214 #ifndef NO_OVERLAY
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
215 #define SchedRegisterDynamicTask(cmd, str, segment) \
626
0e91ddaad798 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
216 register_dynamic_task(cmd, (memaddr)(_EAR_+_ovly_table[segment].file_offset), \
441
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
217 _ovly_table[segment].size, \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
218 runTask_##str, \
1058
d3cb29f1eccb create task_name_list array in Scheduler.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1024
diff changeset
219 runTask_##str##_offset, \
d3cb29f1eccb create task_name_list array in Scheduler.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1024
diff changeset
220 #str);
615
184d6d3f0cd9 remove uncessary Task Name definision
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
221 #define SchedRegisterDynamic(str, segment) SchedRegisterDynamicTask(str, str, segment)
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
222 #else
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
223 #define SchedRegisterDynamicTask(cmd, str, segment) SchedRegisterTask(cmd, str)
615
184d6d3f0cd9 remove uncessary Task Name definision
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
224 #define SchedRegisterDynamic(str, segment) SchedRegisterDynamicTask(str, str, segment)
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
225 #endif
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
226
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
227
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
228 /* end */