Mercurial > hg > Members > Moririn
annotate src/synchronizedQueue/synchronizedQueueForSemContext.c @ 277:9d671e63df74
generate extern
author | mir3636 |
---|---|
date | Thu, 02 Feb 2017 18:29:50 +0900 |
parents | 83ee9c75115a |
children |
rev | line source |
---|---|
45
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 #include <stdlib.h> |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 #include "synchronizedQueueForSemContext.h" |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 extern __code code1(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 extern __code code2(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 extern __code code3(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 extern __code code4(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 extern __code code5(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 extern __code code6(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 extern __code code7(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 extern __code meta(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 extern __code allocate(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 extern __code sender(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 extern __code put(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 extern __code receiver(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 extern __code get(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 extern __code exit_code(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 extern __code thread_exit(struct Context*); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 __code initSynchronizedQueueContext(struct Context* context) { |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 context->dataSize = sizeof(union Data)*ALLOCATE_SIZE; |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 context->code = malloc(sizeof(__code*)*ALLOCATE_SIZE); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 context->data = malloc(sizeof(union Data*)*ALLOCATE_SIZE); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 context->heap_start = malloc(context->dataSize); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 |
52
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
27 context->codeNum = Exit; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
28 context->code[Code1] = code1; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
29 context->code[Code2] = code2; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
30 context->code[Code3] = code3; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
31 context->code[Code4] = code4; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
32 context->code[Code5] = code5; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
33 context->code[Code6] = code6; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
34 context->code[Code7] = code7; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
35 context->code[Allocator] = allocate; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
36 context->code[Sender] = sender; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
37 context->code[Put] = put; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
38 context->code[Receiver] = receiver; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
39 context->code[Get] = get; |
83ee9c75115a
Add pthread_cond_wait & pthread_cond_signal to synchronizedQueue.c
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
45
diff
changeset
|
40 context->code[Exit] = exit_code; |
45
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 context->code[ThreadExit] = thread_exit; |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 context->heap = context->heap_start; |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 context->data[Allocate] = context->heap; |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 context->heap += sizeof(struct Allocate); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 context->data[Queue] = context->heap; |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49 context->heap += sizeof(struct Queue); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
50 context->data[Queue]->queue.first = 0; |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 context->data[Queue]->queue.queue_remain = malloc(sizeof(struct Sem)); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 pthread_mutex_init(&context->data[Queue]->queue.queue_remain->mutex, NULL); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53 pthread_cond_init(&context->data[Queue]->queue.queue_remain->cond, NULL); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54 context->data[Queue]->queue.queue_remain->value = 10; |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
55 |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 context->data[Queue]->queue.queue_count = malloc(sizeof(struct Sem)); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
57 pthread_mutex_init(&context->data[Queue]->queue.queue_count->mutex, NULL); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 pthread_cond_init(&context->data[Queue]->queue.queue_count->cond, NULL); |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
59 context->data[Queue]->queue.queue_count->value = 0; |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
60 |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
61 |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
62 context->dataNum = Queue; |
2e7e66ccb3db
Add synchronizedQueueForSem Files
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
63 } |