comparison src/parallel_execution/dependency.c @ 121:bb8be1820302

Rename Code Gears
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Tue, 26 Jul 2016 13:06:46 +0900
parents 4df53a60e59a
children a086857e1812
comparison
equal deleted inserted replaced
120:4df5bc41561d 121:bb8be1820302
5 __code meta_waitFor(struct Context* context, struct Queue* queue, enum Code next) { 5 __code meta_waitFor(struct Context* context, struct Queue* queue, enum Code next) {
6 context->data[Queue] = (union Data *)queue; 6 context->data[Queue] = (union Data *)queue;
7 goto (context->code[next])(context); 7 goto (context->code[next])(context);
8 } 8 }
9 9
10 __code waitFor1(struct Context* context, struct Task* master, struct Task* slave, struct Element* element, union Data* data) { 10 __code waitFor(struct Context* context, struct Task* slave, struct Element* element, union Data* data) {
11 struct Integer integer = (struct Integer *)data; 11 struct Integer integer = (struct Integer *)data;
12 struct Queue waitMeTasks = (struct Queue *)(integer + integer-> mDataOffset); 12 struct Queue waitMeTasks = (struct Queue *)(integer + integer-> mDataOffset);
13 element->data = (union Data *)slave; 13 element->data = (union Data *)slave;
14 // enqueue waitMe
15 goto meta_waitFor(context, waitMeTasks, PutQueue1); 14 goto meta_waitFor(context, waitMeTasks, PutQueue1);
16 } 15 }
17 16
18 __code waitFor1_stub(struct Context* context) { 17 __code waitFor_stub(struct Context* context) {
19 // think 18 // think
20 } 19 }
21 20
22 __code meta_spawnTask(struct Context* context, struct Queue* queue, enum Code next) { 21 __code meta_spawnTask(struct Context* context, struct Queue* queue, enum Code next) {
23 context->data[Queue] = (union Data *)queue; 22 context->data[Queue] = (union Data *)queue;
42 &context->data[Element]->element, 41 &context->data[Element]->element,
43 &context->data[ActiveQueue]->queue, 42 &context->data[ActiveQueue]->queue,
44 &context->data[WaitQueue]->queue); 43 &context->data[WaitQueue]->queue);
45 } 44 }
46 45
47 __code meta_check_task_finish1(struct Context* context, struct Queue* queue, enum Code next) { 46 __code meta_checkTaskFinish1(struct Context* context, struct Queue* queue, enum Code next) {
48 context->data[Queue] = (union Data *)queue; 47 context->data[Queue] = (union Data *)queue;
49 goto (context->code[next])(context); 48 goto (context->code[next])(context);
50 } 49 }
51 50
52 __code check_task_finish1(struct Context* context, struct Data* data) { 51 __code checkTaskFinish1(struct Context* context, struct Data* data) {
53 struct Integer integer = (struct Integer *)data; 52 struct Integer integer = (struct Integer *)data;
54 struct Queue waitMeTasks = (struct Queue *)(integer + integer->mDataOffset); 53 struct Queue waitMeTasks = (struct Queue *)(integer + integer->mDataOffset);
55 context->next = check_task_finish2; 54 context->next = check_task_finish2;
56 goto meta_check_task_finish1(context, waitMeTasks, CheckTaskFinish2); 55 goto meta_check_task_finish1(context, waitMeTasks, GetQueue1);
57 } 56 }
58 57
59 __code check_task_finish1_stub(struct Context* context) { 58 __code checkTaskFinish1_stub(struct Context* context) {
60 } 59 }
61 60
62 /* 61 /*
63 * ready input data Gear for waitme task 62 * ready input data Gear for waitme task
64 */ 63 */
65 __code check_task_finish2(struct Context* context) { 64 __code checkTaskFinish2(struct Context* context) {
66 struct Task task = ((struct Task) element -> data); 65 struct Task task = ((struct Task) element -> data);
67 task->idsCount--; 66 task->idsCount--;
68 } 67 }
69 68
70 __code check_task_finish2_stub(struct Context* context) { 69 __code checkTaskFinish2_stub(struct Context* context) {
71 } 70 }
72 71
73 __code add(struct Context* context, struct Integer* input1, struct Integer* input2, struct Integer* output) { 72 __code add(struct Context* context, struct Integer* input1, struct Integer* input2, struct Integer* output) {
74 output->value = input1->value + input2->value; 73 output->value = input1->value + input2->value;
74 goto meta(context, context->next);
75 } 75 }
76 76
77 __code mult(struct Context* context, struct Integer* input1, struct Integer* input2, struct Integer* output) { 77 __code mult(struct Context* context, struct Integer* input1, struct Integer* input2, struct Integer* output) {
78 output->value = input1->value * input2->value; 78 output->value = input1->value * input2->value;
79 goto meta(context, context->next);
79 } 80 }