annotate TaskManager/kernel/schedule/Scheduler.h @ 708:d41c62201b1e draft

cleean up SchedTasks.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 15 Dec 2009 10:49:30 +0900
parents 72b2da99e875
children 97adb3fe85c6
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>
301
7f991471d43f remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 298
diff changeset
5 #include "base.h"
7f991471d43f remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 298
diff changeset
6 #include "TaskList.h"
7f991471d43f remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 298
diff changeset
7 #include "ListData.h"
7f991471d43f remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 298
diff changeset
8 #include "DmaManager.h"
7f991471d43f remove deprecated source. not work.
tkaito@localhost.localdomain
parents: 298
diff changeset
9 #include "SchedTaskBase.h"
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
10 #include "MemList.h"
387
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
11 #include "MemHash.h"
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
12
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
13
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
14 #define MAX_USER_TASK 32
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
15 #define MAX_SYSTEM_TASK 2
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
16 #define MAX_TASK_OBJECT MAX_USER_TASK + MAX_SYSTEM_TASK
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
17 #define MAX_GLOBAL_AREA 32
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
18 #define MAX_MAINMEM_AREA 32
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
19
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
20 class SchedTaskBase;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
21 class SchedTask;
184
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents: 109
diff changeset
22 class SchedTaskList;
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
23 class TaskManagerImpl;
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
24 class HTask;
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
25
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
26 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
27
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
28 // Task Object Table
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
29 // 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
30 // 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
31 // 大きいので、SPEには置かない方が本当は良い...
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
32 // get_segment で取って来るのが、おそらくは正しい。
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
33 typedef struct {
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
34 TaskObjectRun run;
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
35 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
36 memaddr end;
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
37 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
38 MemorySegment *segment;
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
39 void (*load)(Scheduler *,int);
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
40 void (*wait)(Scheduler *,int);
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
41 } TaskObject, *TaskObjectPtr;
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
42
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
43 extern "C" {
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
44 extern long random();
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
45 }
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
46
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
47 class Scheduler {
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
48 public:
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
49 virtual ~Scheduler();
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
50
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
51 BASE_NEW_DELETE(Scheduler);
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
52
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
53 /* variables */
194
gongo@localhost.localdomain
parents: 187
diff changeset
54 int id;
387
b6fce69839b5 no compile error but not worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
55 MemHash *hash;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
56
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
57 // double buffering
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
58 TaskListPtr buff_taskList[2];
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
59
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
60 int buffFlag_taskList;
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
61
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
62 /* GlobalMemoryList */
631
30dd8a3deb4a Cell 64 bit tried, but not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 626
diff changeset
63 /* global among Tasks in the same CPU */
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
64 void* globalList[MAX_GLOBAL_AREA];
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
65
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
66 /* 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
67 memaddr mainMemList[MAX_MAINMEM_AREA];
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
68
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
69 /* Code Area */
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
70 MemList *code_segment_pool;
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
71
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
72 DmaManager* connector;
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
73 TaskManagerImpl* manager;
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
74
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
75
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
76 /* functions */
635
c56f6847fb87 SimpleTask worked on Mac OS X
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 634
diff changeset
77 void init(TaskManagerImpl *m);
697
4b6242d03512 TaskArray on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 690
diff changeset
78 void run(SchedTaskBase* task1);
4b6242d03512 TaskArray on going...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 690
diff changeset
79
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
80 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
81 void finish();
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
82
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
83 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
84 TaskListPtr get_renewListBuf();
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
85
187
gongo@localhost.localdomain
parents: 184
diff changeset
86 void set_backupTaskList(TaskListPtr cur_taskList);
gongo@localhost.localdomain
parents: 184
diff changeset
87 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
88 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
89 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
90 int get_backupTaskListIndex();
184
gongo@gendarme.cr.ie.u-ryukyu.ac.jp
parents: 109
diff changeset
91
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
92
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
93 /* GlobalMemory */
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
94 void* global_alloc(int id, int size);
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
95 void* global_get(int id);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
96 void global_set(int id, void *addr);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
97 void global_free(int id);
373
205e4a4af635 MemList not working
kazz@kazzone.cr.ie.u-ryukyu.ac.jp
parents: 366
diff changeset
98 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
99 void free_(void *p) { free(p); }
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
100
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
101 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
102 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
103 memaddr mainMem_get(int id);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
104
389
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
105 MemorySegment * get_segment(memaddr addr, MemList *m);
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
106 MemorySegment * get_segment(memaddr addr, MemList *m, int size);
442
6c63423a7dea hoge... size/count
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 441
diff changeset
107 void allocate_code_segment(int size, int count);
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
108
389
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
109 virtual uint32 get_tag();
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
110 void put_segment(MemorySegment *s);
e2f1706b4eeb MemHash for Cell
kono@localhost.localdomain
parents: 388
diff changeset
111 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
112
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
113 /* DMA Transfer */
625
94d82f2c842f 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 621
diff changeset
114 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
115 void dma_store(void *buf,memaddr addr, uint32 size, uint32 mask);
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
116 void dma_wait(uint32 mask);
255
45e849a81763 show dma wait
tkaito@localhost.localdomain
parents: 194
diff changeset
117 void show_dma_wait() { connector->show_dma_wait(id); };
672
27fec8c70c9c add profiling code
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
118 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
119 void mail_write(memaddr data);
94d82f2c842f 64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 621
diff changeset
120 memaddr mail_read();
109
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
121 void dma_loadList(ListDataPtr list, void *, uint32 mask);
028ffc9c0375 Cerium cvs version
gongo@gendarme.local
parents: 70
diff changeset
122 void dma_storeList(ListDataPtr list, void *, uint32 mask);
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
123
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
124 /* manager */
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
125
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
126 void set_manager(TaskManagerImpl *m) { manager = m; };
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
127
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
128 // user
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
129 HTask * create_task(int cmd);
634
62e570ac5db2 SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 631
diff changeset
130 HTask * create_task(int cmd, memaddr r, long rs, memaddr w, long ws);
62e570ac5db2 SimpleTask start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 631
diff changeset
131
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
132 void set_task_depend(HTask * master, HTask * slave) ;
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
133 void spawn_task(HTask * t) ;
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
134 void set_task_cpu(HTask * t, CPU_TYPE cpu) ;
635
c56f6847fb87 SimpleTask worked on Mac OS X
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 634
diff changeset
135 void *allocate(int size);
621
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
136 void* allocate(int size,int align) ;
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
137 long get_random() ;
64e05530e333 Cell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 619
diff changeset
138 Scheduler *get_scheduler() { return this; };
619
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
139
278db3ca751d RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 615
diff changeset
140
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
141 };
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
142
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
143 extern void register_task(int cmd, TaskObjectRun run);
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,
439
13c6740ab15f still overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 437
diff changeset
146 int entry_offset);
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
147
441
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
148 struct tbl {
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
149 unsigned int vma;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
150 unsigned int size;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
151 unsigned int file_offset;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
152 unsigned int buf;
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
153 };
54c49df8dcda slightly worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 439
diff changeset
154
698
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
155 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
156
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
157 #ifdef SIMPLE_TASK
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
158 inline void
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
159 loadSchedTask(Scheduler *scheduler,int command)
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
160 {
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
161 // fprintf(stderr,"loadSchedTask %d\n",task->command);
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
162 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
163 }
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
164 #else
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
165 inline void
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
166 loadSchedTask(Scheduler *scheduler,int command)
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
167 {
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
168 // fprintf(stderr,"loadSchedTask %d\n",task->command);
72b2da99e875 no compile error for Task Array
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 697
diff changeset
169 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
170 }
42
aa11038dbdc1 *** empty log message ***
gongo
parents:
diff changeset
171 #endif
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) \
464
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
198 register_task(cmd, runTask_##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) \
184d6d3f0cd9 remove uncessary Task Name definision
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 501
diff changeset
201 register_task(str, runTask_##str);
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, \
0d64bdb63005 task run is mere C function now.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 460
diff changeset
223 runTask_##str##_offset);
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 #else
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
226 #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
227 #define SchedRegisterDynamic(str, segment) SchedRegisterDynamicTask(str, str, segment)
437
e924d6cca813 overlay...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 430
diff changeset
228 #endif
423
609758f9f350 Code load implementation... (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
229
403
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
230
e2f29e912d0b clean up and add more info on task_list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
231 /* end */