annotate src/synchronizedQueue/synchronizedQueueForSemContext.c @ 277:9d671e63df74

generate extern
author mir3636
date Thu, 02 Feb 2017 18:29:50 +0900
parents 83ee9c75115a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }