Mercurial > hg > Members > kono > Cerium
annotate TaskManager/kernel/ppe/TaskManagerImpl.h @ 648:f1e10ba45d28
Mail modification. Working on Mac OS X.
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 21 Nov 2009 20:14:45 +0900 |
parents | 7c9ded1ea750 |
children | 4615489c5faa |
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; |
498
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
496
diff
changeset
|
37 virtual void append_activeTask(HTaskPtr); |
cb5ecfc5aaa3
double linked HTaskInfo/HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
496
diff
changeset
|
38 virtual void append_waitTask(HTaskPtr); |
109 | 39 |
647
7c9ded1ea750
MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
637
diff
changeset
|
40 void check_task_finish(HTaskPtr task, HTaskInfo *wait_queue); |
480
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
479
diff
changeset
|
41 void wakeup_waitTask(); |
109 | 42 |
480
46464727d825
TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
479
diff
changeset
|
43 void systask_init(); |
109 | 44 |
45 // user | |
637 | 46 virtual HTaskPtr create_task(int cmd); |
47 virtual HTaskPtr create_task(int cmd, memaddr rbuf, long r_size, memaddr wbuf, long w_size); | |
48 virtual void set_task_depend(HTaskPtr master, HTaskPtr slave); | |
49 virtual void spawn_task(HTaskPtr); | |
50 virtual void set_task_cpu(HTaskPtr, CPU_TYPE); | |
619 | 51 |
637 | 52 void* allocate(int size, int alignment) |
53 { | |
54 if (size==0) return 0; | |
55 #if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN) | |
56 return malloc(size); | |
57 #else | |
58 void *buff; | |
59 posix_memalign(&buff, alignment, size); | |
60 return buff; | |
61 #endif | |
62 } | |
63 | |
64 void* allocate(int size) | |
65 { | |
66 if (size==0) return 0; | |
67 #if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN) | |
68 return malloc(size); | |
69 #else | |
70 void *buff; | |
71 posix_memalign(&buff, DEFAULT_ALIGNMENT, size); | |
72 return buff; | |
73 #endif | |
74 } | |
75 | |
76 Scheduler* get_scheduler() { return scheduler; } | |
77 void set_scheduler(Scheduler *s) { scheduler = s; } | |
3 | 78 }; |
619 | 79 |
3 | 80 #endif |