| rev |
line source |
|
Nina@166
|
1 #include "VMS.h"
|
|
Nina@166
|
2 #include "vmalloc.h"
|
|
Nina@166
|
3 #include "loop.h"
|
|
Nina@166
|
4
|
|
Nina@166
|
5 bulb new_bulb() {
|
|
Nina@166
|
6 bulb b = VMS__malloc((2*NUM_SCHED_SLOTS + 2)*sizeof(int));
|
|
Nina@166
|
7 memset(b,0,(2*NUM_SCHED_SLOTS + 2)*sizeof(int));
|
|
Nina@166
|
8 return b;
|
|
Nina@166
|
9 }
|
|
Nina@166
|
10
|
|
Nina@166
|
11 void set_bulb_member(bulb b, int i, int vp, int task){
|
|
Nina@166
|
12 b[2*i]=vp;
|
|
Nina@166
|
13 b[2*i+1]=task;
|
|
Nina@166
|
14 }
|
|
Nina@166
|
15
|
|
Nina@166
|
16 void set_bulb_core(bulb b, int core){
|
|
Nina@166
|
17 b[2*NUM_SCHED_SLOTS] = core;
|
|
Nina@166
|
18 }
|
|
Nina@166
|
19
|
|
Nina@166
|
20 void set_bulb_id(bulb b, int id){
|
|
Nina@166
|
21 b[2*NUM_SCHED_SLOTS + 1] = id;
|
|
Nina@166
|
22 }
|
|
Nina@166
|
23
|
|
Nina@166
|
24 void set_loop_file(FILE* file){
|
|
Nina@166
|
25 loop_file=file;
|
|
Nina@166
|
26 }
|
|
Nina@166
|
27
|
|
Nina@166
|
28 void print_bulb_to_file(void* _b){
|
|
Nina@166
|
29 bulb b = (bulb) _b;
|
|
Nina@166
|
30 if(b[2*NUM_SCHED_SLOTS]!=0 || b[2*NUM_SCHED_SLOTS + 1]!=0)
|
|
Nina@166
|
31 fprintf(loop_file,"sync%d_%d [shape=rect];\n",b[2*NUM_SCHED_SLOTS],b[2*NUM_SCHED_SLOTS + 1]);
|
|
Nina@166
|
32 int i;
|
|
Nina@166
|
33 for(i=0;i<NUM_SCHED_SLOTS;++i){
|
|
Nina@166
|
34 if(b[2*i] != 0){
|
|
Nina@166
|
35 fprintf(loop_file, "sync%d_%d -> VP_%d_%d;\n",b[2*NUM_SCHED_SLOTS],b[2*NUM_SCHED_SLOTS + 1],b[2*i],b[2*i+1]);
|
|
Nina@166
|
36 fprintf(loop_file, "VP_%d_%d -> sync%d_%d;\n",b[2*i],b[2*i+1],b[2*NUM_SCHED_SLOTS],b[2*NUM_SCHED_SLOTS + 1] + 1);
|
|
Nina@166
|
37 }
|
|
Nina@166
|
38 }
|
|
Nina@166
|
39 }
|
|
Nina@166
|
40
|
|
Nina@166
|
41 int prev_slots[NUM_CORES][2*NUM_SCHED_SLOTS];
|
|
Nina@166
|
42
|
|
Nina@166
|
43 void print_per_slot_to_file(void* _b){
|
|
Nina@166
|
44 bulb b = (bulb) _b;
|
|
Nina@166
|
45 int i;
|
|
Nina@166
|
46 for(i=0;i<NUM_SCHED_SLOTS;++i){
|
|
Nina@166
|
47 if(b[2*i] != 0){
|
|
Nina@166
|
48 if(prev_slots[b[2*NUM_SCHED_SLOTS]][2*i] != 0){
|
|
Nina@166
|
49 fprintf(loop_file, "VP_%d_%d -> VP_%d_%d;\n",prev_slots[b[2*NUM_SCHED_SLOTS]][2*i],prev_slots[b[2*NUM_SCHED_SLOTS]][2*i+1],b[2*i],b[2*i+1]);
|
|
Nina@166
|
50 }
|
|
Nina@166
|
51 prev_slots[b[2*NUM_SCHED_SLOTS]][2*i] = b[2*i];
|
|
Nina@166
|
52 prev_slots[b[2*NUM_SCHED_SLOTS]][2*i+1] = b[2*i+1];
|
|
Nina@166
|
53 }
|
|
Nina@166
|
54 }
|
|
Nina@166
|
55 } |