Mercurial > hg > Members > innparusu > Gears
diff src/parallel_execution/dependency.c @ 124:acf0453b1c7a
Fix meta data pointer calculate
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 27 Sep 2016 16:19:31 +0900 |
parents | 4ff6f093b695 |
children | 77e60b6cdace |
line wrap: on
line diff
--- a/src/parallel_execution/dependency.c Tue Sep 13 11:54:25 2016 +0900 +++ b/src/parallel_execution/dependency.c Tue Sep 27 16:19:31 2016 +0900 @@ -9,16 +9,16 @@ __code waitFor(struct Context* context, struct Task* slave, struct Element* element, union Data* data) { struct Integer* integer = (struct Integer *)data; - struct Queue* waitMeTasks = (struct Queue *)(integer + integer-> mDataOffset); + struct Queue* waitMeTasks = (struct Queue *)(integer + integer-> mDataOffset / sizeof(struct Integer)); element->data = (union Data *)slave; goto meta_waitFor(context, waitMeTasks, PutQueue1); } __code waitFor_stub(struct Context* context) { goto waitFor(context, - &context->data[context->dataNum-1]->task, + &context->data[context->dataNum-2]->task, &context->data[Element]->element, - &context->data[Node]->node.value); + context->data[Node]->node.value); } __code meta_spawnTask(struct Context* context, struct Queue* queue, enum Code next) { @@ -26,7 +26,7 @@ goto (context->code[next])(context); } -__code spawnTask(struct Context* context, struct Task* task, struct Element* element, struct Queue* activeQueue, struct Queue* waitQueue) { +__code spawnTask(struct Context* context, struct Task* task, struct Queue* activeQueue, struct Queue* waitQueue) { if (task->idsCount == 0) { //printf("put ActiveQueue\n"); // enqueue activeQueue @@ -41,7 +41,6 @@ __code spawnTask_stub(struct Context* context) { goto spawnTask(context, (struct Task *)(context->data[Element]->element.data), - &context->data[Element]->element, &context->data[ActiveQueue]->queue, &context->data[WaitQueue]->queue); } @@ -53,7 +52,7 @@ __code checkTaskFinish1(struct Context* context, union Data* data) { struct Integer* integer = (struct Integer *)data; - struct Queue* waitMeTasks = (struct Queue *)(integer + integer->mDataOffset); + struct Queue* waitMeTasks = (struct Queue *)(integer + integer->mDataOffset / sizeof(struct Integer)); context->next = CheckTaskFinish2; goto meta_checkTaskFinish1(context, waitMeTasks, GetQueue1); } @@ -77,7 +76,7 @@ } __code checkTaskFinish2_stub(struct Context* context) { - goto checkTaskFinish1(context, + goto checkTaskFinish2(context, (struct Task*)(context->data[Element]->element.data)); }