annotate TaskManager/kernel/schedule/Scheduler.h @ 1124:c43f49400c22 draft

add mail profile
author yutaka@localhost.localdomain
date Fri, 11 Feb 2011 20:39:24 +0900
parents f994f5032299
children 8142e652ea4c
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"
387
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
12 #include "MemHash.h"
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
13
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
14
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
15 #define MAX_USER_TASK 32
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
16 #define MAX_SYSTEM_TASK 2
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
17 #define MAX_TASK_OBJECT MAX_USER_TASK + MAX_SYSTEM_TASK
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
18 #define MAX_GLOBAL_AREA 32
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
19 #define MAX_MAINMEM_AREA 32
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
20
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
21 class SchedTaskBase;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
22 class SchedTask;
184
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents: 109
diff changeset
23 class SchedTaskList;
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
24 class TaskManagerImpl;
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
25 class HTask;
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
26
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
27 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
28
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
29 // Task Object Table
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
30 // 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
31 // 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
32 // 大きいので、SPEには置かない方が本当は良い...
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
33 // 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
34 typedef struct task_object {
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
35 TaskObjectRun run;
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
36 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
37 memaddr end;
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
38 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
39 MemorySegment *segment;
1062
f994f5032299 add TaskManagerImpl::get_task_name()
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1058
diff changeset
40 const char *name;
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
41 void (*load)(Scheduler *,int);
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
42 void (*wait)(Scheduler *,int);
895
b662e9dd26b0 add alignment of classes in SPU
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 887
diff changeset
43 } __attribute__ ((aligned (DEFAULT_ALIGNMENT)))
b662e9dd26b0 add alignment of classes in SPU
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 887
diff changeset
44 TaskObject, *TaskObjectPtr;
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
45
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
46 extern "C" {
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
47 extern long random();
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
48 }
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
49
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
50 class Scheduler {
836
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
51 private:
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
52 TaskManagerImpl* manager_tmp;
1124
c43f49400c22 add mail profile
yutaka@localhost.localdomain
parents: 1062
diff changeset
53 int hash_get_count;
c43f49400c22 add mail profile
yutaka@localhost.localdomain
parents: 1062
diff changeset
54 int hash_hit_count;
836
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
55
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
56 public:
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
57 virtual ~Scheduler();
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
58 BASE_NEW_DELETE(Scheduler);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
59
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
60 /* variables */
194
gongo@localhost.localdomain
parents: 187
diff changeset
61 int id;
387
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
62 MemHash *hash;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
63
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
64 // double buffering
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
65 TaskListPtr buff_taskList[2];
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
66
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
67 int buffFlag_taskList;
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
68
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
69 /* GlobalMemoryList */
631
30dd8a3deb4a Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 626
diff changeset
70 /* global among Tasks in the same CPU */
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
71 void* globalList[MAX_GLOBAL_AREA];
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
72
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
73 /* 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
74 memaddr mainMemList[MAX_MAINMEM_AREA];
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
75
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
76 /* Code Area */
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
77 MemList *code_segment_pool;
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
78
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
79 DmaManager* connector;
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
80 TaskManagerImpl* manager;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
81
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
82
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
83 /* functions */
635
c56f6847fb87 SimpleTask worked on Mac OS X
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 634
diff changeset
84 void init(TaskManagerImpl *m);
697
4b6242d03512 TaskArray on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 690
diff changeset
85 void run(SchedTaskBase* task1);
4b6242d03512 TaskArray on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 690
diff changeset
86
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
87 virtual void init_impl() {};
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
88 void finish();
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
89
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
90 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
91 TaskListPtr get_renewListBuf();
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
92
187
gongo@localhost.localdomain
parents: 184
diff changeset
93 void set_backupTaskList(TaskListPtr cur_taskList);
gongo@localhost.localdomain
parents: 184
diff changeset
94 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
95 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
96 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
97 int get_backupTaskListIndex();
184
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents: 109
diff changeset
98
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
99
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
100 /* GlobalMemory */
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
101 void* global_alloc(int id, int size);
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
102 void* global_get(int id);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
103 void global_set(int id, void *addr);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
104 void global_free(int id);
836
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
105 //MemList* createMemList(int size, int count);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
106 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
107 void free_(void *p) { free(p); }
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
108
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
109 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
110 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
111 memaddr mainMem_get(int id);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
112
389
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
113 MemorySegment * get_segment(memaddr addr, MemList *m);
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
114 MemorySegment * get_segment(memaddr addr, MemList *m, int size);
872
d7b0c0f8514c add overlay segment
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 836
diff changeset
115 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
116
389
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
117 virtual uint32 get_tag();
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
118 void put_segment(MemorySegment *s);
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
119 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
120
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
121 /* DMA Transfer */
625
94d82f2c842f 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 621
diff changeset
122 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: 621
diff changeset
123 void dma_store(void *buf,memaddr addr, uint32 size, uint32 mask);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
124 void dma_wait(uint32 mask);
970
1a4849b2acad change pipeline and TaskArray fast
Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 923
diff changeset
125 void dma_wait(uint32 mask, int cmd);
923
382a48afb061 fix DMA/Mail wait profiler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
126 void show_dma_wait() { connector->show_dma_wait(this, id); };
1124
c43f49400c22 add mail profile
yutaka@localhost.localdomain
parents: 1062
diff changeset
127 void show_hash_hit_ratio();
672
27fec8c70c9c add profiling code
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
128 void start_profile() { connector->start_profile(); };
625
94d82f2c842f 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 621
diff changeset
129 void mail_write(memaddr data);
1007
00c01f416e3a add mail_queue
yutaka@localhost.localdomain
parents: 970
diff changeset
130 void mail_write_queue(memaddr data);
00c01f416e3a add mail_queue
yutaka@localhost.localdomain
parents: 970
diff changeset
131 void mail_write_finish_list(memaddr data);
625
94d82f2c842f 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 621
diff changeset
132 memaddr mail_read();
1024
cf0ad93028e9 add task list mail time profile.
yutaka@localhost.localdomain
parents: 1007
diff changeset
133 memaddr task_list_mail_read();
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
134 void dma_loadList(ListDataPtr list, void *, uint32 mask);
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
135 void dma_storeList(ListDataPtr list, void *, uint32 mask);
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
136
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
137 /* manager */
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
138
836
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
139 void set_manager(TaskManagerImpl *m) {
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
140 manager = m;
74fd8d2a7b9d example fix 50%
tkaito
parents: 804
diff changeset
141 };
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
142
800
54f0180cea0f run16 word count ( not yet worked. )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 743
diff changeset
143 /* user */
634
62e570ac5db2 SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 631
diff changeset
144
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
145 long get_random() ;
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
146 Scheduler *get_scheduler() { return this; };
736
1b225972ae88 cut printf
hiroki@localhost.localdomain
parents: 713
diff changeset
147 int printf(const char *format, ...);
743
55ccf5f6d9af continue..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 736
diff changeset
148 int vprintf0(const char *format, va_list ap);
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
149
899
1b9418af3127 minor fix..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 895
diff changeset
150 } ;
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
151
1058
d3cb29f1eccb create task_name_list array in Scheduler.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1024
diff changeset
152 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
153 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
154 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
155 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
156 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
157
441
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
158 struct tbl {
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
159 unsigned int vma;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
160 unsigned int size;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
161 unsigned int file_offset;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
162 unsigned int buf;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
163 };
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
164
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
165 extern TaskObject task_list[MAX_TASK_OBJECT];
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
166
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
167 inline void
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
168 loadSchedTask(Scheduler *scheduler,int command)
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
169 {
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
170 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
171 }
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
172
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
173 #endif
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
174
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
175
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
176
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
177 #define SchedConstructor(str) \
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
178 str() {} \
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
179 BASE_NEW_DELETE(str) \
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
180
468
796f72cb21d9 test_nogl on Mac OS X worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
181 #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
182
796f72cb21d9 test_nogl on Mac OS X worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
183 #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
184 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
185 extern "C" { \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
186 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
187 { \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
188 return run(smanager, rbuf, wbuf); \
460
433892ba596b fix Scheduler.h
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
189 } \
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
190 }
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
191
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
192 #define SchedExternTask(str) \
460
433892ba596b fix Scheduler.h
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
193 extern "C" { \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
194 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
195 }
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
196
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
197 #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
198 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
199
615
184d6d3f0cd9 remove uncessary Task Name definision
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
200 #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
201 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
202
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
203 #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
204 SchedDefineTask(str)
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
205
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
206 #ifndef NO_OVERLAY
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
207 #define SchedExternDynamicTask(str,segment) \
441
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
208 extern "C" { \
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
209 extern unsigned long long _EAR_; \
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
210 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
211 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
212 }
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
213 #else
439
13c6740ab15f still overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 437
diff changeset
214 #define SchedExternDynamicTask(str,segment) SchedExternTask(str)
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
215 #endif
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
216
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
217
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
218 #ifndef NO_OVERLAY
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
219 #define SchedRegisterDynamicTask(cmd, str, segment) \
626
0e91ddaad798 64bit mode compatibility on Cell
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
220 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
221 _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
222 runTask_##str, \
1058
d3cb29f1eccb create task_name_list array in Scheduler.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1024
diff changeset
223 runTask_##str##_offset, \
d3cb29f1eccb create task_name_list array in Scheduler.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 1024
diff changeset
224 #str);
615
184d6d3f0cd9 remove uncessary Task Name definision
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
225 #define SchedRegisterDynamic(str, segment) SchedRegisterDynamicTask(str, str, segment)
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
226 #else
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
227 #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
228 #define SchedRegisterDynamic(str, segment) SchedRegisterDynamicTask(str, str, segment)
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
229 #endif
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
230
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
231
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
232 /* end */