Mercurial > hg > Members > kono > Cerium
diff TaskManager/Cell/CellTaskManagerImpl.cc @ 704:6d497c098455
Compatibility mode works.
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 14 Dec 2009 19:54:00 +0900 |
parents | 3b6290c05f9f |
children | f725c6455d19 |
line wrap: on
line diff
--- a/TaskManager/Cell/CellTaskManagerImpl.cc Mon Dec 14 18:34:46 2009 +0900 +++ b/TaskManager/Cell/CellTaskManagerImpl.cc Mon Dec 14 19:54:00 2009 +0900 @@ -90,10 +90,12 @@ void CellTaskManagerImpl::set_runTaskList() { - // ここ...直すかな TaskListPtr list; - +#ifdef SIMPLE_TASK + SimpleTaskPtr task; +#else TaskPtr task; +#endif int speid; while (HTaskPtr htask = activeTaskQueue->poll()) { @@ -128,8 +130,33 @@ } task = &list->tasks[list->length++]; +#ifdef SIMPLE_TASK + if (htask->command==TaskArray1) { + // compatibility + // Task with ListData is stored in the ListData + int next = (htask->r_size+sizeof(SimpleTask))/sizeof(SimpleTask); + if (list->length+next>=TASK_MAX_SIZE) { + list->length--; + TaskListPtr newList = taskListImpl->create(); + newList = TaskListInfo::append(newList, speTaskList_bg[speid]); + speTaskList_bg[speid] = newList; + list = newList; + task = &list->tasks[list->length++]; + } + Task *array = (Task*)&list->tasks[list->length]; + list->length += next; + memcpy(array, htask->rbuf, htask->r_size); + free(htask->rbuf); + htask->rbuf = 0; htask->r_size = 0; + *task = *(SimpleTask*)htask; + } else { + *task = *(SimpleTask*)htask; + } +#else TaskPtr stask = (TaskPtr) task; *stask = *(TaskPtr) htask; +#endif + } }