Mercurial > hg > Members > kono > Cerium
annotate TaskManager/kernel/ppe/TaskManagerImpl.h @ 719:cafffff0f45a
clean up scheduler main loop
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 19 Dec 2009 10:34:43 +0900 |
parents | 3b6290c05f9f |
children | 31d0a5baafdf |
rev | line source |
---|---|
3 | 1 #ifndef INCLUDED_TASK_MANAGER_IMPL |
2 #define INCLUDED_TASK_MANAGER_IMPL | |
3 | |
307 | 4 #include "MailManager.h" |
5 #include "ListData.h" | |
475
e083c4ff91c1
BufferManager removed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
373
diff
changeset
|
6 #include "TaskListInfo.h" |
e083c4ff91c1
BufferManager removed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
373
diff
changeset
|
7 #include "TaskQueueInfo.h" |
e083c4ff91c1
BufferManager removed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
373
diff
changeset
|
8 #include "HTaskInfo.h" |
619 | 9 class Scheduler; |
10 class MemList; | |
475
e083c4ff91c1
BufferManager removed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
373
diff
changeset
|
11 |
54 | 12 |
3 | 13 class TaskManagerImpl { |
14 public: | |
15 | |
16 /* variables */ | |
17 int machineNum; | |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
496
diff
changeset
|
18 HTaskInfo *activeTaskQueue; |
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
496
diff
changeset
|
19 HTaskInfo *waitTaskQueue; |
475
e083c4ff91c1
BufferManager removed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
373
diff
changeset
|
20 |
e083c4ff91c1
BufferManager removed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
373
diff
changeset
|
21 TaskListInfo *taskListImpl; |
e083c4ff91c1
BufferManager removed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
373
diff
changeset
|
22 TaskQueueInfo *taskQueueImpl; |
e083c4ff91c1
BufferManager removed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
373
diff
changeset
|
23 HTaskInfo *htaskImpl; |
619 | 24 |
514 | 25 SchedTask *schedTaskManager; |
637 | 26 Scheduler *scheduler; |
3 | 27 |
480
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
479
diff
changeset
|
28 /* constructor */ |
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
479
diff
changeset
|
29 TaskManagerImpl(int num = 1) ; |
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
479
diff
changeset
|
30 |
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
479
diff
changeset
|
31 virtual ~TaskManagerImpl() { } |
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
479
diff
changeset
|
32 |
3 | 33 /* functions */ |
109 | 34 // system |
480
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
479
diff
changeset
|
35 virtual void init() = 0; |
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
479
diff
changeset
|
36 virtual void run() = 0; |
672 | 37 virtual void start_profile() = 0; |
38 virtual void show_profile() = 0; | |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
496
diff
changeset
|
39 virtual void append_activeTask(HTaskPtr); |
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
496
diff
changeset
|
40 virtual void append_waitTask(HTaskPtr); |
109 | 41 |
647
7c9ded1ea750
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
637
diff
changeset
|
42 void check_task_finish(HTaskPtr task, HTaskInfo *wait_queue); |
109 | 43 |
480
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
479
diff
changeset
|
44 void systask_init(); |
109 | 45 |
46 // user | |
637 | 47 virtual HTaskPtr create_task(int cmd); |
48 virtual HTaskPtr create_task(int cmd, memaddr rbuf, long r_size, memaddr wbuf, long w_size); | |
49 virtual void set_task_depend(HTaskPtr master, HTaskPtr slave); | |
50 virtual void spawn_task(HTaskPtr); | |
51 virtual void set_task_cpu(HTaskPtr, CPU_TYPE); | |
619 | 52 |
637 | 53 void* allocate(int size, int alignment) |
54 { | |
666 | 55 void *buff; |
637 | 56 if (size==0) return 0; |
666 | 57 #if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN) |
58 buff = malloc(size); | |
59 #else | |
637 | 60 posix_memalign(&buff, alignment, size); |
666 | 61 #endif |
62 if (buff==0) fprintf(stderr,"Can't allocate memory\n"); | |
637 | 63 return buff; |
64 } | |
65 | |
66 void* allocate(int size) | |
67 { | |
666 | 68 void *buff; |
637 | 69 if (size==0) return 0; |
666 | 70 #if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN) |
71 buff = malloc(size); | |
72 #else | |
637 | 73 posix_memalign(&buff, DEFAULT_ALIGNMENT, size); |
666 | 74 #endif |
75 if (buff==0) fprintf(stderr,"Can't allocate memory\n"); | |
637 | 76 return buff; |
77 } | |
78 | |
79 Scheduler* get_scheduler() { return scheduler; } | |
80 void set_scheduler(Scheduler *s) { scheduler = s; } | |
3 | 81 }; |
619 | 82 |
3 | 83 #endif |