annotate TaskManager/kernel/ppe/TaskManagerImpl.h @ 941:0c11c2fd7e63

add no_auto_free flag on HTask
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 31 Jul 2010 17:50:38 +0900
parents 586b4f825f24
children 9989dd7b9ac2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
1 #ifndef INCLUDED_TASK_MANAGER_IMPL
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
2 #define INCLUDED_TASK_MANAGER_IMPL
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
3
307
7075842aa155 clean up include
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 109
diff changeset
4 #include "MailManager.h"
7075842aa155 clean up include
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 109
diff changeset
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
31d0a5baafdf cut printf
hiroki@localhost.localdomain
parents: 719
diff changeset
9 #include "Scheduler.h"
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
10 class MemList;
475
e083c4ff91c1 BufferManager removed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
11
54
90523ccc4dff *** empty log message ***
gongo
parents: 50
diff changeset
12
3
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
13 class TaskManagerImpl {
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
14 public:
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
15
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
16 /* variables */
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
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 TaskQueueInfo *taskQueueImpl;
e083c4ff91c1 BufferManager removed.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
22 HTaskInfo *htaskImpl;
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
23
514
2659376067e8 old ball_bound fix...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 507
diff changeset
24 SchedTask *schedTaskManager;
637
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
25 Scheduler *scheduler;
832
29094b48d966 poling (may recurse..)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 830
diff changeset
26 TaskManagerImpl *others;
3
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
27
480
46464727d825 TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 479
diff changeset
28 /* constructor */
835
yutaka@localhost.localdomain
parents: 832
diff changeset
29 TaskManagerImpl(int num = 1) ;
480
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
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
33 /* functions */
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 88
diff changeset
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
3b6290c05f9f add profiling code
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 666
diff changeset
37 virtual void start_profile() = 0;
3b6290c05f9f add profiling code
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 666
diff changeset
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);
832
29094b48d966 poling (may recurse..)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 830
diff changeset
41 virtual void polling() = 0;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 88
diff changeset
42
647
7c9ded1ea750 MailManager rewrite. not yet worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
43 void check_task_finish(HTaskPtr task, HTaskInfo *wait_queue);
830
c7905ead974f return TaskList->self
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 809
diff changeset
44 void check_task_list_finish(SchedTask *s, TaskListPtr list, HTaskInfo *wait_queue);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 88
diff changeset
45
480
46464727d825 TaskQueueInfo initiaization...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 479
diff changeset
46 void systask_init();
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 88
diff changeset
47
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 88
diff changeset
48 // user
897
ad95be23c794 add return address in SimpleTask for debugging.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 895
diff changeset
49 virtual HTaskPtr create_task(int cmd,void *from);
ad95be23c794 add return address in SimpleTask for debugging.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 895
diff changeset
50 virtual HTaskPtr create_task(int cmd, memaddr rbuf, long r_size, memaddr wbuf, long w_size,void *from);
ad95be23c794 add return address in SimpleTask for debugging.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 895
diff changeset
51 virtual HTaskPtr create_task_array(int id, int num_task, int num_param, int num_inData, int num_outData,void *from);
637
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
52 virtual void set_task_depend(HTaskPtr master, HTaskPtr slave);
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
53 virtual void spawn_task(HTaskPtr);
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
54 virtual void set_task_cpu(HTaskPtr, CPU_TYPE);
801
974cd68383b3 TaslListInfo
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 800
diff changeset
55 void set_taskList(HTaskPtr htask, TaskListInfoPtr taskList) ;
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
56
941
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
57 void free_htask(HTaskPtr htask) {
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
58 #if !defined(__SPU__)
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
59 if (htask->self) {
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
60 htask->flag.no_auto_free = 0;
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
61 return;
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
62 }
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
63 htaskImpl->free_(htask);
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
64 #endif
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
65 }
0c11c2fd7e63 add no_auto_free flag on HTask
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 899
diff changeset
66
637
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
67 void* allocate(int size, int alignment)
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
68 {
899
586b4f825f24 minor fix..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 897
diff changeset
69 void *buff = 0;
637
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
70 if (size==0) return 0;
666
4615489c5faa simplify word_count
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 647
diff changeset
71 #if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN)
4615489c5faa simplify word_count
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 647
diff changeset
72 buff = malloc(size);
4615489c5faa simplify word_count
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 647
diff changeset
73 #else
637
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
74 posix_memalign(&buff, alignment, size);
666
4615489c5faa simplify word_count
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 647
diff changeset
75 #endif
736
31d0a5baafdf cut printf
hiroki@localhost.localdomain
parents: 719
diff changeset
76 if (buff==0)
31d0a5baafdf cut printf
hiroki@localhost.localdomain
parents: 719
diff changeset
77 get_scheduler()->printf("Can't allocate memory\n");
637
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
78 return buff;
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
79 }
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
80
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
81 void* allocate(int size)
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
82 {
899
586b4f825f24 minor fix..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 897
diff changeset
83 void *buff = 0;
637
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
84 if (size==0) return 0;
666
4615489c5faa simplify word_count
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 647
diff changeset
85 #if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN)
4615489c5faa simplify word_count
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 647
diff changeset
86 buff = malloc(size);
4615489c5faa simplify word_count
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 647
diff changeset
87 #else
637
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
88 posix_memalign(&buff, DEFAULT_ALIGNMENT, size);
666
4615489c5faa simplify word_count
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 647
diff changeset
89 #endif
736
31d0a5baafdf cut printf
hiroki@localhost.localdomain
parents: 719
diff changeset
90 if (buff==0)
31d0a5baafdf cut printf
hiroki@localhost.localdomain
parents: 719
diff changeset
91 get_scheduler()->printf("Can't allocate memory\n");
637
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
92 return buff;
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
93 }
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
94
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
95 Scheduler* get_scheduler() { return scheduler; }
5530fa36d42e not yet worked...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 636
diff changeset
96 void set_scheduler(Scheduler *s) { scheduler = s; }
895
bed529c55eda add alignment of classes in SPU
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 835
diff changeset
97 } __attribute__ ((aligned (DEFAULT_ALIGNMENT)));
619
0decff4e867b RenewTask removal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 567
diff changeset
98
3
2356238ebea7 *** empty log message ***
gongo
parents:
diff changeset
99 #endif