Mercurial > hg > Members > kono > Cerium
diff TaskManager/Fifo/FifoTaskManagerImpl.cc @ 634:0558abba673c
SimpleTask start
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 18 Nov 2009 17:29:14 +0900 |
parents | 60aa3f241b10 |
children | 8cc609285bbe |
line wrap: on
line diff
--- a/TaskManager/Fifo/FifoTaskManagerImpl.cc Wed Nov 18 14:47:23 2009 +0900 +++ b/TaskManager/Fifo/FifoTaskManagerImpl.cc Wed Nov 18 17:29:14 2009 +0900 @@ -85,7 +85,11 @@ FifoTaskManagerImpl::get_runTaskList() { TaskListPtr list, list_top; +#ifdef SIMPLE_TASK TaskPtr task; // Task (SPE に送る Task) +#else + SimpleTaskPtr task; // Task (SPE に送る Task) +#endif if (activeTaskQueue->empty()) { return NULL; @@ -101,18 +105,16 @@ // printf("active task queue length = %d\n",activeTaskQueue->length()); while (HTaskPtr htask = activeTaskQueue->poll()) { task = &list->tasks[list->length++]; - // inData, outData を内蔵にしたので実は、結構でかくない? - // 268 byte 程度だが... 不要な分(設定してない inData, outData, param - // とかもコピーしてるね。rbuf/wbuf の意味を変えてしまったわけか。 +#ifdef SIMPLE_TASK + *task = *(SimpleTask*)htask; +#else memcpy(task, (Task*)htask, sizeof(Task)); - - +#endif if (list->length >= TASK_MAX_SIZE) { TaskListPtr newList = taskListImpl->create(); list_top = TaskListInfo::append(list_top, newList); list = newList; } - // activeTaskQueue->free_(htask); ここで free しないで、 // mail を待つ } @@ -201,15 +203,6 @@ while (q) { data = q->data; - /** - * MY_SPE_STATUS_READY: SPE が持ってた Task 全て終了 - * MY_SPE_NOP: 特に意味のないコマンド - * それ以外:終了したタスク(PPEにあるのでアドレス - * - * MY_SPE_NOP が 0 なので、 - * 下のように data > MY_SPE_NOP とかしています。 - * 一目でよくわからない書き方なんで、直したいところですが。。。 - */ if (data == (memaddr)MY_SPE_STATUS_READY) { __debug_ppe("mail_check(): Task List finish\n"); } else if (data != (memaddr)MY_SPE_NOP) {