Mercurial > hg > Members > kono > Cerium
annotate TaskManager/kernel/ppe/TaskManagerImpl.h @ 807:3763d29f41a3
merge
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 22 May 2010 18:21:13 +0900 |
parents | 974cd68383b3 daab9cd6f91f |
children | 76a39ad68846 |
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" |
736 | 9 #include "Scheduler.h" |
619 | 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); | |
800
2708c4a7bade
run16 word count ( not yet worked. )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
736
diff
changeset
|
49 virtual HTaskPtr create_task_array(int id, int num_task, int num_param, int num_inData, int num_outData); |
637 | 50 virtual void set_task_depend(HTaskPtr master, HTaskPtr slave); |
51 virtual void spawn_task(HTaskPtr); | |
52 virtual void set_task_cpu(HTaskPtr, CPU_TYPE); | |
801 | 53 void set_taskList(HTaskPtr htask, TaskListInfoPtr taskList) ; |
619 | 54 |
637 | 55 void* allocate(int size, int alignment) |
56 { | |
666 | 57 void *buff; |
637 | 58 if (size==0) return 0; |
666 | 59 #if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN) |
60 buff = malloc(size); | |
61 #else | |
637 | 62 posix_memalign(&buff, alignment, size); |
666 | 63 #endif |
736 | 64 if (buff==0) |
65 get_scheduler()->printf("Can't allocate memory\n"); | |
637 | 66 return buff; |
67 } | |
68 | |
69 void* allocate(int size) | |
70 { | |
666 | 71 void *buff; |
637 | 72 if (size==0) return 0; |
666 | 73 #if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN) |
74 buff = malloc(size); | |
75 #else | |
637 | 76 posix_memalign(&buff, DEFAULT_ALIGNMENT, size); |
666 | 77 #endif |
736 | 78 if (buff==0) |
79 get_scheduler()->printf("Can't allocate memory\n"); | |
637 | 80 return buff; |
81 } | |
82 | |
83 Scheduler* get_scheduler() { return scheduler; } | |
84 void set_scheduler(Scheduler *s) { scheduler = s; } | |
3 | 85 }; |
619 | 86 |
3 | 87 #endif |