# HG changeset patch # User Shinji KONO # Date 1260085270 -32400 # Node ID b976bed4e46ab59ee4e55e54fc1e4e0a468058a4 # Parent af0942d42de013d12c3960a0f8524546e30964e7 TaskArray structure diff -r af0942d42de0 -r b976bed4e46a TaskManager/kernel/ppe/Task.cc --- a/TaskManager/kernel/ppe/Task.cc Sun Dec 06 13:17:42 2009 +0900 +++ b/TaskManager/kernel/ppe/Task.cc Sun Dec 06 16:41:10 2009 +0900 @@ -83,56 +83,28 @@ #else /* ifdef SIMPLE_TASK */ -int -Task::add_inData_t(memaddr addr, int size) -{ -} - -int -Task::add_outData_t(memaddr addr, int size) -{ -} - -int -Task::set_inData_length(int length) +void +Task::set_inData_t( int index, memaddr addr, int size) { -} + ListElementPtr elm = (ListElementPtr) inData(0); +#ifdef __CERIUM_CELL__ + elm->addr = (uint32)(unsigned long)addr; +#else + elm->addr = addr; +#endif + elm->size = size; +} -int -Task::set_inData_t(int index, memaddr addr, int size) -{ -} - -int -Task::set_outData_length(int length) -{ -} - -int +void Task::set_outData_t(int index, memaddr addr, int size) { -} - -int -Task::add_data(ListData &list, memaddr addr, int size) -{ -} - -void -Task::set_param_length(int i) -{ -} - -int -Task::add_param_t(memaddr param) -{ - this->param[param_size++] = _param; -} - -int -Task::set_param_t(int index, memaddr param) -{ - this->param[index] = _param; + ListElementPtr elm = (ListElementPtr) outData(0); +#ifdef __CERIUM_CELL__ + elm->addr = (uint32)(unsigned long)addr; +#else + elm->addr = addr; +#endif + elm->size = size; } diff -r af0942d42de0 -r b976bed4e46a TaskManager/kernel/ppe/Task.h --- a/TaskManager/kernel/ppe/Task.h Sun Dec 06 13:17:42 2009 +0900 +++ b/TaskManager/kernel/ppe/Task.h Sun Dec 06 16:41:10 2009 +0900 @@ -37,36 +37,52 @@ class Task { public: // variables - BASE_NEW_DELETE(Task); - int size; int param_size; - memaddr *param; int inData_size; - ListEelemnt *inData; int outData_size; - ListElement *outData; + void *data[] __attribute__ ((aligned (DEFAULT_ALIGNMENT))); + // memaddr param[param_size]; + // ListEelemnt inData[inData_size]; + // ListElement outData[outData_size]; public: // functions - int add_inData_t(memaddr addr, int size); - int add_outData_t(memaddr addr, int size); - int set_inData_length(int length); - int set_inData_t(int index, memaddr addr, int size); - int set_outData_length(int length); - int set_outData_t(int index, memaddr addr, int size); - int add_data(ListData &list, memaddr addr, int size); - void set_param_length(int i); - int add_param_t(memaddr param); // obsolete. do not use. - int set_param_t(int index, memaddr param); - int size() { return size; } + // int add_inData_t(memaddr addr, int size); + // int add_outData_t(memaddr addr, int size); + memaddr param(int index) { + memaddr p = (memaddr)data->data; + return p + sizeof(memaddr)*index; + } + memaddr inData(int index) { + memaddr p = (memaddr)data + + (sizeof(memaddr)*index); + return p + sizeof(ListElement)*index; + } + memaddr outData(int index) { + memaddr p = inData(inData_size); + return p + sizeof(ListEelement)* index; + } -#define add_param(param) add_param_t((memaddr)(param)) + void set_param_length(int i) { param_size = i; } + void set_inData_length(int length) { inData_size = length; } + void set_outData_length(int length) { outData_size = length; } + void set_inData_t( int index, memaddr addr, int size); + void set_outData_t(int index, memaddr addr, int size); + int set_param_t(int index, memaddr param) { + memaddr *p = (memaddr*)param(index); + *p = param; + } + int size() { + return outData(outData_size)-(memaddr)data; + } + +// #define add_param(param) add_param_t((memaddr)(param)) #define set_param(index,param) set_param_t(index, (memaddr) (param)) -#define add_inData(addr, size) \ - add_inData_t((memaddr)(addr), (size)); -#define add_outData(addr, size) \ - add_outData_t((memaddr)(addr), (size)); +// #define add_inData(addr, size) \ +// add_inData_t((memaddr)(addr), (size)); +// #define add_outData(addr, size) \ +// add_outData_t((memaddr)(addr), (size)); #define set_inData(index, addr, size) \ set_inData_t(index, (memaddr)(addr), (size)); #define set_outData(index, addr, size) \ diff -r af0942d42de0 -r b976bed4e46a example/Bulk/main.cc --- a/example/Bulk/main.cc Sun Dec 06 13:17:42 2009 +0900 +++ b/example/Bulk/main.cc Sun Dec 06 16:41:10 2009 +0900 @@ -73,7 +73,7 @@ HTask *twice_main = manager->create_task_array(size); int pos = 0; for(int i = 0;icreate_task(Twice,pos); + Task *t = twice_main->create_task(Twice,pos); int length2 = length/2; // 以下の順序でデータを追加する必要がある。 // length を先に指定すればsetは後からでも良い。 @@ -100,7 +100,7 @@ t->set_outData(1,data+length2, sizeof(int)*length2); pos += t->size(); - delete t; // Wao! + // delete t; // Wao! } twice_main->set_cpu(SPE_ANY); /*