Mercurial > hg > Members > innparusu > Gears
annotate src/synchronizedQueue/synchronizedQueueContext.c @ 39:754c90e96e3d
Add synchronizedQueue. it use pthread_mutex_lock, unlock
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 16 May 2015 20:17:58 +0900 |
parents | ce9fde200f3e |
children | 46917f503bce |
rev | line source |
---|---|
36 | 1 #include <stdlib.h> |
2 | |
28
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 #include "synchronizedQueueContext.h" |
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 |
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 extern __code code1(struct Context*); |
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 extern __code code2(struct Context*); |
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 extern __code code3(struct Context*); |
36 | 8 extern __code code4(struct Context*); |
9 extern __code code5(struct Context*); | |
10 extern __code code6(struct Context*); | |
39
754c90e96e3d
Add synchronizedQueue. it use pthread_mutex_lock, unlock
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
38
diff
changeset
|
11 extern __code code7(struct Context*); |
28
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 extern __code meta(struct Context*); |
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 extern __code allocate(struct Context*); |
38
ce9fde200f3e
Add code segment sender & receiver to synchronizedQueue
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
36
diff
changeset
|
14 extern __code sender(struct Context*); |
28
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 extern __code put(struct Context*); |
38
ce9fde200f3e
Add code segment sender & receiver to synchronizedQueue
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
36
diff
changeset
|
16 extern __code receiver(struct Context*); |
36 | 17 extern __code get(struct Context*); |
28
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 extern __code exit_code(struct Context*); |
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 |
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 __code initSynchronizedQueueContext(struct Context* context) { |
36 | 21 context->dataSize = sizeof(union Data)*ALLOCATE_SIZE; |
22 context->code = malloc(sizeof(__code*)*ALLOCATE_SIZE); | |
23 context->data = malloc(sizeof(union Data*)*ALLOCATE_SIZE); | |
24 context->heap_start = malloc(context->dataSize); | |
25 | |
26 context->codeNum = Exit; | |
28
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 context->code[Code1] = code1; |
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 context->code[Code2] = code2; |
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 context->code[Code3] = code3; |
36 | 30 context->code[Code4] = code4; |
31 context->code[Code5] = code5; | |
32 context->code[Code6] = code6; | |
39
754c90e96e3d
Add synchronizedQueue. it use pthread_mutex_lock, unlock
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
38
diff
changeset
|
33 context->code[Code7] = code7; |
28
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 context->code[Allocator] = allocate; |
38
ce9fde200f3e
Add code segment sender & receiver to synchronizedQueue
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
36
diff
changeset
|
35 context->code[Sender] = sender; |
28
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 context->code[Put] = put; |
38
ce9fde200f3e
Add code segment sender & receiver to synchronizedQueue
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
36
diff
changeset
|
37 context->code[Receiver] = receiver; |
36 | 38 context->code[Get] = get; |
28
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 context->code[Exit] = exit_code; |
36 | 40 |
41 context->heap = context->heap_start; | |
42 | |
43 context->data[Allocate] = context->heap; | |
44 context->heap += sizeof(struct Allocate); | |
45 | |
46 context->data[Queue] = context->heap; | |
47 context->heap += sizeof(struct Queue); | |
38
ce9fde200f3e
Add code segment sender & receiver to synchronizedQueue
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
36
diff
changeset
|
48 context->data[Queue]->queue.first = 0; |
39
754c90e96e3d
Add synchronizedQueue. it use pthread_mutex_lock, unlock
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
38
diff
changeset
|
49 pthread_mutex_init(&context->data[Queue]->queue.mutex, NULL); |
36 | 50 |
51 context->dataNum = Queue; | |
28
5d9f74220506
Add file synchronizedQueueContext
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 } |