Mercurial > hg > Members > innparusu > Gears
annotate src/parallel_execution/dependency.c @ 117:c9ab10847fc3
Define dependency Task create function
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 19 Jul 2016 02:18:31 +0900 |
parents | 69fbd905d750 |
children | 4df53a60e59a |
rev | line source |
---|---|
112 | 1 #include <stdio.h> |
111 | 2 #include "context.h" |
3 #include "origin_cs.h" | |
4 | |
5 __code meta_waitFor(struct Context* context, struct Queue* queue, enum Code next) { | |
112 | 6 context->data[Queue] = (union Data *)queue; |
111 | 7 goto (context->code[next])(context); |
8 } | |
9 | |
117
c9ab10847fc3
Define dependency Task create function
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
116
diff
changeset
|
10 __code waitFor1(struct Context* context, struct Task* master, struct Task* slave, struct Element* element, struct Node* node) { |
113
d05b9937aa95
Change element data from Task to Data
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
11 element->data = (union Data *)slave; |
111 | 12 // enqueue waitMe |
115
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
13 //goto meta_waitFor(context, master->waitMe, PutQueue1); |
111 | 14 } |
15 | |
16 __code waitFor1_stub(struct Context* context) { | |
17 // next think | |
18 } | |
19 | |
115
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
20 /** |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
21 __code waitFor2(struct Context* context, struct Task* master, struct Task* slave, struct Element* element) { |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
22 element->task = master; |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
23 task->next = context->next; |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
24 // enqueue waitI |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
25 goto meta_waitFor(context, task->waitI, PutQueue1); |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
26 } |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
27 |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
28 __code waitFor2_stub(struct Context* context) { |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
29 // next think |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
30 } |
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
31 */ |
111 | 32 |
112 | 33 __code meta_spawnTask(struct Context* context, struct Queue* queue, enum Code next) { |
34 context->data[Queue] = (union Data *)queue; | |
35 goto (context->code[next])(context); | |
111 | 36 } |
37 | |
112 | 38 __code spawnTask(struct Context* context, struct Task* task, struct Element* element, struct Queue* activeQueue, struct Queue* waitQueue) { |
117
c9ab10847fc3
Define dependency Task create function
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
116
diff
changeset
|
39 if (task->idsCount == 0) { |
112 | 40 //printf("put ActiveQueue\n"); |
111 | 41 // enqueue activeQueue |
112 | 42 goto meta_spawnTask(context, activeQueue, PutQueue1); |
113
d05b9937aa95
Change element data from Task to Data
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
43 } else { |
112 | 44 //printf("put WaitQueue\n"); |
111 | 45 // enqueue waitQueue |
112 | 46 goto meta_spawnTask(context, waitQueue, PutQueue1); |
111 | 47 } |
48 } | |
49 | |
50 __code spawnTask_stub(struct Context* context) { | |
112 | 51 goto spawnTask(context, |
115
135472238fb7
Add meta Data Gear allocate
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
113
diff
changeset
|
52 &context->data[context->dataNum]->task, |
112 | 53 &context->data[Element]->element, |
54 &context->data[ActiveQueue]->queue, | |
55 &context->data[WaitQueue]->queue); | |
111 | 56 } |
57 | |
116 | 58 __code add(struct Context* context, struct Integer* input1, struct Integer* input2, struct Integer* output) { |
59 output->value = input1->value + input2->value; | |
111 | 60 } |
61 | |
116 | 62 __code mult(struct Context* context, struct Integer* input1, struct Integer* input2, struct Integer* output) { |
63 output->value = input1->value * input2->value; | |
111 | 64 } |