diff src/parallel_execution/worker.c @ 247:ce262b2c1daf

Fix createTask for main
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Wed, 25 Jan 2017 04:14:50 +0900
parents d1567718f12c
children 1ede5390cda2
line wrap: on
line diff
--- a/src/parallel_execution/worker.c	Wed Jan 25 03:07:59 2017 +0900
+++ b/src/parallel_execution/worker.c	Wed Jan 25 04:14:50 2017 +0900
@@ -21,18 +21,19 @@
     CPUWorker* cpuWorker = (CPUWorker*)worker->worker;
     cpuWorker->context = NEW(struct Context);
     initContext(cpuWorker->context);
+    Gearef(cpuWorker->context, Worker)->worker = (union Data*)worker;
     pthread_cond_wait(&cpuWorker->cond, &cpuWorker->mutex);
     goto meta(cpuWorker->context, C_taskReceiveWorker);
 }
 
-__code taskReceiveWorker(struct Context* context, Worker* worker) {
-    Queue* queue = worker->tasks;
+__code taskReceiveWorker(struct Context* context, Worker* worker, Queue* queue) {
+    queue->queue = (union Data*)worker->tasks;
     queue->next = C_getTask1;
     goto meta(context, queue->take);
 }
 
 __code taskReceiveWorker_stub(struct Context* context) {
-    goto taskReceiveWorker(context, Gearef(context, Worker));
+    goto taskReceiveWorker(context, &Gearef(context, Worker)->worker->Worker, Gearef(context, Queue));
 }
 
 __code getTask1(struct Context* context, Worker* worker, struct Context* task) {
@@ -43,9 +44,9 @@
 }
 
 __code getTask1_stub(struct Context* context) {
-    Worker* worker = Gearef(context,Worker);
-    Context* task = &worker->tasks->data->context; 
-    goto getTask1(context,worker,task);
+    Worker* worker = &Gearef(context,Worker)->worker->Worker;
+    Context* task = &Gearef(context, Queue)->data->context;
+    goto getTask1(context, worker, task);
 }
 
 #ifdef USE_CUDA