comparison TaskManager/kernel/ppe/TaskManagerImpl.cc @ 897:ad95be23c794

add return address in SimpleTask for debugging.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 16 Jul 2010 19:00:22 +0900
parents e2af25174a05
children 9cfac2e8fc2e
comparison
equal deleted inserted replaced
895:bed529c55eda 897:ad95be23c794
34 */ 34 */
35 void 35 void
36 TaskManagerImpl::systask_init() 36 TaskManagerImpl::systask_init()
37 { 37 {
38 systask_register(); 38 systask_register();
39 systask_start = create_task(StartTask,0,0,0,0); 39 systask_start = create_task(StartTask,0,0,0,0,__builtin_return_address(0));
40 systask_finish = create_task(FinishTask,0,0,0,0); 40 systask_finish = create_task(FinishTask,0,0,0,0,__builtin_return_address(0));
41 41
42 systask_start->spawn(); 42 systask_start->spawn();
43 43
44 // すべての Task が FinishTask を wait_for すると、 44 // すべての Task が FinishTask を wait_for すると、
45 // あらゆる Task が FinishTask の waiting task queue を操作する 45 // あらゆる Task が FinishTask の waiting task queue を操作する
47 // TaskManager が実行する方が安い。 47 // TaskManager が実行する方が安い。
48 // append_waitTask(systask_finish); 48 // append_waitTask(systask_finish);
49 } 49 }
50 50
51 HTaskPtr 51 HTaskPtr
52 TaskManagerImpl::create_task(int cmd,memaddr rbuf, long r_size, memaddr wbuf, long w_size) 52 TaskManagerImpl::create_task(int cmd,memaddr rbuf, long r_size, memaddr wbuf, long w_size, void *from) {
53 {
54 HTaskPtr new_task; 53 HTaskPtr new_task;
55 54
56 new_task = htaskImpl->create(cmd, rbuf, r_size, wbuf, w_size); 55 new_task = htaskImpl->create(cmd, rbuf, r_size, wbuf, w_size);
57 new_task->post_func = noaction; 56 new_task->post_func = noaction;
58 new_task->mimpl = this; 57 new_task->mimpl = this;
58 new_task->from = (memaddr)from;
59 59
60 return new_task; 60 return new_task;
61 } 61 }
62 62
63 HTaskPtr 63 HTaskPtr
64 TaskManagerImpl::create_task(int cmd) 64 TaskManagerImpl::create_task(int cmd,void *from)
65 { 65 {
66 HTaskPtr new_task; 66 HTaskPtr new_task;
67 67
68 // for compatibility 68 // for compatibility
69 new_task = htaskImpl->create(TaskArray1); 69 new_task = htaskImpl->create(TaskArray1);
70 new_task->post_func = noaction; 70 new_task->post_func = noaction;
71 new_task->mimpl = this; 71 new_task->mimpl = this;
72 new_task->create_task_array(cmd,1,8,8,8); 72 new_task->create_task_array(cmd,1,8,8,8);
73 // rbuf, r_size were set 73 // rbuf, r_size were set
74 new_task->command = TaskArray1; 74 new_task->command = TaskArray1;
75 new_task->from = (memaddr)from;
75 76
76 return new_task; 77 return new_task;
77 } 78 }
78 79
79 HTaskPtr 80 HTaskPtr
80 TaskManagerImpl::create_task_array(int id, int num_task, int num_param, int num_inData, int num_outData) 81 TaskManagerImpl::create_task_array(int id, int num_task, int num_param, int num_inData, int num_outData, void *from)
81 { 82 {
82 HTaskPtr ta = create_task(TaskArray,0,0,0,0); 83 HTaskPtr ta = create_task(TaskArray,0,0,0,0, from);
83 ta->create_task_array(id, num_task, num_param, num_inData, num_outData) ; 84 ta->create_task_array(id, num_task, num_param, num_inData, num_outData) ;
84 return ta; 85 return ta;
85 } 86 }
86 87
87 /** 88 /**