Mercurial > hg > Members > innparusu > Gears
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 } |