Mercurial > hg > GearsTemplate
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 |