summaryrefslogtreecommitdiffstats
path: root/baseline/source/extra.h
diff options
context:
space:
mode:
Diffstat (limited to 'baseline/source/extra.h')
-rw-r--r--baseline/source/extra.h55
1 files changed, 28 insertions, 27 deletions
diff --git a/baseline/source/extra.h b/baseline/source/extra.h
index df8164f..81ec146 100644
--- a/baseline/source/extra.h
+++ b/baseline/source/extra.h
@@ -46,30 +46,28 @@
46#endif 46#endif
47 47
48#define LOAD_PARAMS_ITRL \ 48#define LOAD_PARAMS_ITRL \
49 if (argc < 9) { \ 49 if (argc < 6) { \
50 printf("Usage: %s <name> <loops> <my core> <unused> <unused> <runID> <\?\?\?>", argv[0]);\ 50 printf("Usage: %s <name> <loops> <my core> <runID> <save results?>\n", argv[0]);\
51 exit(1);\ 51 exit(1);\
52 }\ 52 }\
53 char *thisProgram=argv[1];\ 53 char *thisProgram=argv[1];\
54 int maxJobs=atoi(argv[2]);\ 54 int maxJobs=atoi(argv[2]);\
55 char *thisCore=argv[3];\ 55 char *thisCore=argv[3];\
56 char *otherCore=argv[4];\ 56 char *runID=argv[4];\
57 char *otherProgram=argv[5];\ 57 int output=atoi(argv[5]);\
58 char *runID=argv[6];\
59 int output=atoi(argv[7]);\
60 pid_t killMe;\ 58 pid_t killMe;\
61 struct timespec start, end;\ 59 struct timespec start, end;\
62 int jobsComplete;\ 60 int jobsComplete;\
63 int jobs_complete = -1;\ 61 int jobs_complete = -1;\
64 long progTime[maxJobs*output];\ 62 float progTime[maxJobs*output];\
65 memset(progTime, 0, sizeof(long)*maxJobs*output);\ 63 memset(progTime, 0, sizeof(float)*maxJobs*output);\
66 char fileName[50];\ 64 char fileName[50];\
67 char *bigArray;\ 65 char *bigArray;\
68 int wasteCount;\ 66 int wasteCount;\
69 unsigned long mmdc_read[maxJobs];\ 67 float mmdc_read[maxJobs];\
70 unsigned long mmdc_write[maxJobs];\ 68 float mmdc_write[maxJobs];\
71 memset(mmdc_read, 0, sizeof(unsigned long)*maxJobs);\ 69 memset(mmdc_read, 0, sizeof(float)*maxJobs);\
72 memset(mmdc_write, 0, sizeof(unsigned long)*maxJobs);\ 70 memset(mmdc_write, 0, sizeof(float)*maxJobs);\
73 strcpy(fileName, runID);\ 71 strcpy(fileName, runID);\
74 strcat(fileName, ".txt");\ 72 strcat(fileName, ".txt");\
75 mlockall(MCL_CURRENT || MCL_FUTURE); 73 mlockall(MCL_CURRENT || MCL_FUTURE);
@@ -102,10 +100,10 @@
102 res.cpu = cpu; \ 100 res.cpu = cpu; \
103 res.priority = LITMUS_HIGHEST_PRIORITY; \ 101 res.priority = LITMUS_HIGHEST_PRIORITY; \
104 /* we take over half the CPU time (these are ns) */ \ 102 /* we take over half the CPU time (these are ns) */ \
105 res.polling_params.budget = ms2ns(999); \ 103 res.polling_params.budget = ms2ns(3000); \
106 res.polling_params.period = ms2ns(1000); \ 104 res.polling_params.period = ms2ns(3000); \
107 res.polling_params.offset = 0; \ 105 res.polling_params.offset = 0; \
108 res.polling_params.relative_deadline = ms2ns(999); \ 106 res.polling_params.relative_deadline = ms2ns(3000); \
109 /* Not 100% sure that we should use periodic polling */ \ 107 /* Not 100% sure that we should use periodic polling */ \
110 if (reservation_create(PERIODIC_POLLING, &res) < 0) { \ 108 if (reservation_create(PERIODIC_POLLING, &res) < 0) { \
111 perror("Unable to create reservation"); \ 109 perror("Unable to create reservation"); \
@@ -163,14 +161,19 @@
163#if MMDC_PROF 161#if MMDC_PROF
164#define SAVE_RESULTS \ 162#define SAVE_RESULTS \
165 if(jobs_complete>-1) {\ 163 if(jobs_complete>-1) {\
166 progTime[jobs_complete]=(end.tv_nsec-start.tv_nsec)+(1000000000*(end.tv_sec-start.tv_sec));\ 164 progTime[jobs_complete] = end.tv_sec - start.tv_sec;\
165 progTime[jobs_complete] *= 1000000000;\
166 progTime[jobs_complete] += end.tv_nsec - start.tv_nsec;\
167 mmdc_read[jobs_complete] = mmdc_res.read_bytes;\ 167 mmdc_read[jobs_complete] = mmdc_res.read_bytes;\
168 mmdc_write[jobs_complete] = mmdc_res.write_bytes;\ 168 mmdc_write[jobs_complete] = mmdc_res.write_bytes;\
169 } 169 }
170#else 170#else
171#define SAVE_RESULTS \ 171#define SAVE_RESULTS \
172 if(jobs_complete>-1)\ 172 if(jobs_complete>-1) {\
173 progTime[jobs_complete]=(end.tv_nsec-start.tv_nsec)+(1000000000*(end.tv_sec-start.tv_sec)); 173 progTime[jobs_complete] = end.tv_sec - start.tv_sec;\
174 progTime[jobs_complete] *= 1000000000;\
175 progTime[jobs_complete] += end.tv_nsec - start.tv_nsec;\
176 }
174#endif 177#endif
175 178
176 179
@@ -188,8 +191,8 @@
188 exit(1);\ 191 exit(1);\
189 }\ 192 }\
190 for(int i = 0; i <= jobs_complete; i++){\ 193 for(int i = 0; i <= jobs_complete; i++){\
191 fprintf(fp, "%s %s %s %s %d %ld %s %d %lu %lu \n",\ 194 fprintf(fp, "%s none %s none %d %.f %s %d %.f %.f \n",\
192 thisProgram, otherProgram, thisCore, otherCore, maxJobs,\ 195 thisProgram, thisCore, maxJobs,\
193 progTime[i], runID, i, mmdc_read[i], mmdc_write[i]);\ 196 progTime[i], runID, i, mmdc_read[i], mmdc_write[i]);\
194 }\ 197 }\
195 fclose(fp);\ 198 fclose(fp);\
@@ -250,7 +253,7 @@
250#define START_LOOP FLUSH_CACHES START_TIMER 253#define START_LOOP FLUSH_CACHES START_TIMER
251#endif 254#endif
252 255
253#define STOP_LOOP STOP_TIMER SAVE_RESULTS jobs_complete++; 256#define STOP_LOOP STOP_TIMER jobs_complete++; SAVE_RESULTS
254 257
255 258
256/* 259/*
@@ -260,12 +263,10 @@ main
260SET_UP 263SET_UP
261notice that STOP LOOP negates the ++ if outout=0 264notice that STOP LOOP negates the ++ if outout=0
262for (jobsComplete=-1; jobsComplete<maxJobs; jobsComplete++){ 265for (jobsComplete=-1; jobsComplete<maxJobs; jobsComplete++){
263 KILL_CACHE 266 START_LOOP
264 START_TIMER 267 tacleInit();
265 tacleInit(); 268 tacleMain();
266 tacleMain(); 269 STOP_LOOP
267 STOP_TIMER
268 SAVE_RESULTS
269} 270}
270WRITE_TO_FILE 271WRITE_TO_FILE
271tacleReturn 272tacleReturn