Mercurial > hg > Members > kono > Cerium
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 /** |