Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/ppe/TaskManagerImpl.cc @ 54:90523ccc4dff
*** empty log message ***
author | gongo |
---|---|
date | Sat, 16 Feb 2008 14:38:36 +0900 |
parents | 7927e00fb8e2 |
children | 7492eb28b577 |
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/TaskManagerImpl.cc Fri Feb 15 20:58:50 2008 +0900 +++ b/TaskManager/kernel/ppe/TaskManagerImpl.cc Sat Feb 16 14:38:36 2008 +0900 @@ -29,10 +29,8 @@ } HTaskPtr -TaskManagerImpl::create_task(int cmd, int size, - unsigned long long in_addr, - unsigned long long out_addr, - void (*func)(void)) +TaskManagerImpl::create_task(int cmd, int size, DmaBuffer *in_addr, + DmaBuffer *out_addr, void (*func)(void)) { HTaskPtr new_task; @@ -98,8 +96,23 @@ task = &list->tasks[list->length++]; task->command = htask->command; - task->in_addr = htask->in_addr; - task->out_addr = htask->out_addr; + + // Fix me !!!!! + // ださい + // かっこいい class 判定がないものか。typeinfoだっけ? + // in,out にあるのが DmaBuffer 以外だったら通信させない決まりにしたい + if (htask->in_addr != 0) { + //task->in_addr = (uint32)(htask->in_addr->get_buffer()); + htask->in_addr->get_buffer(&task->in_addr); + } else { + task->in_addr = 0; + } + if (htask->in_addr != 0) { + //task->out_addr = (uint32)(htask->out_addr->get_buffer()); + htask->out_addr->get_buffer(&task->out_addr); + } else { + task->out_addr = 0; + } task->in_size = htask->in_size; task->self = htask; @@ -174,3 +187,12 @@ return ret; } + +/** + * 型名指定するには template だけど... + */ +DmaBuffer* +TaskManagerImpl::allocate(int size) +{ + return new DmaBuffer(size); +}