comparison src/parallel_execution/context.h @ 288:f1b0cc555b6e

Add odgCommit
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Mon, 06 Feb 2017 04:04:25 +0900
parents 6b099d73949c
children 8e7926f3e271
comparison
equal deleted inserted replaced
287:6b099d73949c 288:f1b0cc555b6e
43 context->heap += sizeof(struct dseg *)*len; \ 43 context->heap += sizeof(struct dseg *)*len; \
44 meta->type = D_##dseg; \ 44 meta->type = D_##dseg; \
45 meta->size = len; \ 45 meta->size = len; \
46 data; }) 46 data; })
47 47
48 #define GET_TYPE(dseg) ({ \ 48 #define GET_META(dseg) ((struct Meta*)(((void*)dseg) - sizeof(struct Meta)))
49 struct Meta* meta = (struct Meta*)(((void*)dseg) - sizeof(struct Meta));\ 49 #define GET_TYPE(dseg) (GET_META(dseg)->type)
50 meta->type; }) 50 #define GET_WAIT_LIST(dseg) (GET_META(dseg)->wait)
51 51
52 #define Gearef(context, t) (&(context)->data[D_##t]->t) 52 #define Gearef(context, t) (&(context)->data[D_##t]->t)
53 53
54 // (struct SingleLinkedStack *)context->data[D_Stack]->Stack.stack->Stack.stack 54 // (struct SingleLinkedStack *)context->data[D_Stack]->Stack.stack->Stack.stack
55 55
75 void* heap; 75 void* heap;
76 long heapLimit; 76 long heapLimit;
77 int dataNum; 77 int dataNum;
78 int idgCount; //number of waiting dataGear 78 int idgCount; //number of waiting dataGear
79 int odg; 79 int odg;
80 int maxOdg;
80 int workerId; 81 int workerId;
81 union Data **data; 82 union Data **data;
82 }; 83 };
83 84
84 union Data { 85 union Data {
123 union Data* worker; 124 union Data* worker;
124 enum Code taskReceive; 125 enum Code taskReceive;
125 enum Code shutdown; 126 enum Code shutdown;
126 enum Code next; 127 enum Code next;
127 struct Queue* tasks; 128 struct Queue* tasks;
129 struct TaskManager* taskManager;
128 } Worker; 130 } Worker;
129 struct CPUWorker { 131 struct CPUWorker {
130 pthread_t thread; 132 pthread_t thread;
131 pthread_mutex_t mutex; 133 pthread_mutex_t mutex;
132 pthread_cond_t cond; 134 pthread_cond_t cond;