comparison src/parallel_execution/examples/Add.cbc @ 347:9578c38c10d1

Fix
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Tue, 30 May 2017 18:21:19 +0900
parents 9f8a87389b68
children 01e0fa598ce3
comparison
equal deleted inserted replaced
346:9f8a87389b68 347:9578c38c10d1
20 codeGear->data[codeGear->odg] = dataGears[2]; 20 codeGear->data[codeGear->odg] = dataGears[2];
21 task->maxOdg = task->odg + 1; 21 task->maxOdg = task->odg + 1;
22 goto meta(context, C_setWaitTask) 22 goto meta(context, C_setWaitTask)
23 } 23 }
24 24
25 __code setAddCodeGearInfo_stub(struct Context* context) {
26 Context* codeGear = (Context *)GearIpl(context, CodeGear, codeGear);
27 Data* dataGears = Gearef(context, CodeGear)->dataGears;
28 enum Code next = Gearef(context, CodeGear)->next;
29 goto setAddCodeGearInfo(context, codeGear, dataGears, next);
30 }
31
25 __code setWaitTask(struct Context* codeGear, struct Queue* Queue, struct LoopCounter* loopCounter, union Data** dataGears, __code next(...)) { 32 __code setWaitTask(struct Context* codeGear, struct Queue* Queue, struct LoopCounter* loopCounter, union Data** dataGears, __code next(...)) {
26 if(loopCounter->i < codeGear->idgCount) { 33 if(loopCounter->i < codeGear->idgCount) {
27 queue->queue = (Data *)GET_WAIT_LIST(data); 34 queue->queue = (Data *)GET_WAIT_LIST(data);
28 queue->data = codeGears[loopCoutner->i]; 35 queue->data = codeGears[loopCoutner->i];
29 queue->next = C_setWaitTask; 36 queue->next = C_setWaitTask;
38 __code setWaitTask_stub(struct Context* context) { 45 __code setWaitTask_stub(struct Context* context) {
39 Context* codeGear = GearImpl(context, CodeGear, codeGear) 46 Context* codeGear = GearImpl(context, CodeGear, codeGear)
40 goto setWaitTask(context, codeGear, Gearef(context, Queue), Gearef(codeGear, LoopCounter), Gearef(context, CodeGear)->dataGears, Gearef(context, CodeGear)->next); 47 goto setWaitTask(context, codeGear, Gearef(context, Queue), Gearef(codeGear, LoopCounter), Gearef(context, CodeGear)->dataGears, Gearef(context, CodeGear)->next);
41 } 48 }
42 49
43 __code add(struct Integer* input1, struct Integer* input2, __code next(struct Integer* output, ...)) { 50 __code add(struct Integer* input1, struct Integer* input2, __code next(union Integer* output, ...)) {
44 output->value = input1->value + input2->value; 51 output->value = input1->value + input2->value;
45 printf("%d + %d = %d\n", input1->value, input2->value, output->value); 52 printf("%d + %d = %d\n", input1->value, input2->value, output->value);
46 goto meta(context, next); 53 goto next(output, ...)
47 } 54 }
48
49 __code add_stub(struct Context* context) {
50 goto add(context,
51 &context->data[context->idg]->Integer,
52 &context->data[context->idg + 1]->Integer,
53 &context->data[context->odg]->Integer,
54 context->next);
55 }
56