aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-09-22 13:41:43 -0400
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2011-01-26 18:20:24 -0500
commit128da49ce7b85ea02f98618706a52c5f73a3f1d0 (patch)
tree7e2ea270047a03ddb1e8b70dbc450198609f1cdd
parent2fbbb7df71d6502dd229772b7ca8d577086e5349 (diff)
Correclty invoking set_rt_param syscall.
-rw-r--r--bin/rt_launch_edfwm.c46
-rw-r--r--bin/rtspin_edfwm.c42
2 files changed, 43 insertions, 45 deletions
diff --git a/bin/rt_launch_edfwm.c b/bin/rt_launch_edfwm.c
index 9ef3880..b5a972c 100644
--- a/bin/rt_launch_edfwm.c
+++ b/bin/rt_launch_edfwm.c
@@ -70,7 +70,7 @@ int parse_edfwm_slice(FILE *ts, int slices_no, int task_id,
70 return -1; 70 return -1;
71 } 71 }
72 } 72 }
73 return 1; 73 return 0;
74} 74}
75 75
76/* Custom format to read parameters for tasks from a plain text file: 76/* Custom format to read parameters for tasks from a plain text file:
@@ -93,30 +93,29 @@ int parse_edfwm_ts_file(FILE *ts, struct rt_task *rt)
93 ret = fscanf(ts, "%d %lf %lf %lf %d %d\n", 93 ret = fscanf(ts, "%d %lf %lf %lf %d %d\n",
94 &task_id, &fwcet, &fperiod, &fphase, &cpu, &sliceno); 94 &task_id, &fwcet, &fperiod, &fphase, &cpu, &sliceno);
95 95
96 if (ret != EOF) { 96 if (ferror(ts))
97 goto err;
97 98
98 rt->exec_cost = fms_to_ns(fwcet); 99 rt->exec_cost = fms_to_ns(fwcet);
99 rt->period = fms_to_ns(fperiod); 100 rt->period = fms_to_ns(fperiod);
100 rt->phase = fms_to_ns(fphase); 101 rt->phase = fms_to_ns(fphase);
101 rt->cpu = cpu; 102 rt->cpu = cpu;
102 rt->cls = RT_CLASS_HARD; 103 rt->cls = RT_CLASS_HARD;
103 rt->budget_policy = PRECISE_ENFORCEMENT; 104 rt->budget_policy = PRECISE_ENFORCEMENT;
104 105
105 printf("(tid, wcet, period, ph, cpu, slices) = " 106 printf("(tid, wcet, period, ph, cpu, slices) = "
106 "(%d, %llu, %llu, %llu, %u, %u)\n", 107 "(%d, %llu, %llu, %llu, %u, %u)\n",
107 task_id, rt->exec_cost, rt->period, rt->phase, cpu, sliceno); 108 task_id, rt->exec_cost, rt->period, rt->phase, cpu, sliceno);
108 if (sliceno > 0) { 109
109 memset(&rt->semi_part, 0, sizeof(struct edf_wm_params)); 110 if (sliceno > 0) {
110 ret = parse_edfwm_slice(ts, sliceno, task_id, 111 memset(&rt->semi_part, 0, sizeof(struct edf_wm_params));
112 ret = parse_edfwm_slice(ts, sliceno, task_id,
111 (struct edf_wm_params*) &rt->semi_part); 113 (struct edf_wm_params*) &rt->semi_part);
112 if (ret < 0) 114 if (ret < 0)
113 goto err; 115 goto err;
114 }
115 } 116 }
116 if (ferror(ts))
117 goto err;
118 117
119 return EOF; 118 return 0;
120 119
121err: 120err:
122 fprintf(stderr, "Error parsing file\n"); 121 fprintf(stderr, "Error parsing file\n");
@@ -125,7 +124,7 @@ err:
125 124
126#define OPTSTR "w" 125#define OPTSTR "w"
127 126
128int main(int argc, char** argv) 127int main(int argc, char** argv)
129{ 128{
130 int ret; 129 int ret;
131 int wait = 0; 130 int wait = 0;
@@ -162,11 +161,11 @@ int main(int argc, char** argv)
162 161
163 memset(&rt, 0, sizeof(struct rt_task)); 162 memset(&rt, 0, sizeof(struct rt_task));
164 163
165 while (parse_edfwm_ts_file(file, &rt) != EOF) { 164 if (parse_edfwm_ts_file(file, &rt) < 0)
165 bail_out("Could not parse file\n");
166 166
167 if (sporadic_task_ns_semi(&rt) < 0) 167 if (sporadic_task_ns_semi(&rt) < 0)
168 bail_out("could not setup rt task params"); 168 bail_out("could not setup rt task params");
169 }
170 169
171 fclose(file); 170 fclose(file);
172 171
@@ -181,3 +180,4 @@ int main(int argc, char** argv)
181 180
182 return 0; 181 return 0;
183} 182}
183
diff --git a/bin/rtspin_edfwm.c b/bin/rtspin_edfwm.c
index 11216fe..200fb4c 100644
--- a/bin/rtspin_edfwm.c
+++ b/bin/rtspin_edfwm.c
@@ -168,7 +168,7 @@ int parse_edfwm_slice(FILE *ts, int slices_no, int task_id,
168 return -1; 168 return -1;
169 } 169 }
170 } 170 }
171 return 1; 171 return 0;
172} 172}
173 173
174/* Custom format to read parameters for tasks from a plain text file: 174/* Custom format to read parameters for tasks from a plain text file:
@@ -191,30 +191,28 @@ int parse_edfwm_ts_file(FILE *ts, struct rt_task *rt)
191 ret = fscanf(ts, "%d %lf %lf %lf %d %d\n", 191 ret = fscanf(ts, "%d %lf %lf %lf %d %d\n",
192 &task_id, &fwcet, &fperiod, &fphase, &cpu, &sliceno); 192 &task_id, &fwcet, &fperiod, &fphase, &cpu, &sliceno);
193 193
194 if (ret != EOF) { 194 if (ferror(ts))
195 goto err;
195 196
196 rt->exec_cost = fms_to_ns(fwcet); 197 rt->exec_cost = fms_to_ns(fwcet);
197 rt->period = fms_to_ns(fperiod); 198 rt->period = fms_to_ns(fperiod);
198 rt->phase = fms_to_ns(fphase); 199 rt->phase = fms_to_ns(fphase);
199 rt->cpu = cpu; 200 rt->cpu = cpu;
200 rt->cls = RT_CLASS_HARD; 201 rt->cls = RT_CLASS_HARD;
201 rt->budget_policy = PRECISE_ENFORCEMENT; 202 rt->budget_policy = PRECISE_ENFORCEMENT;
202 203
203 printf("(tid, wcet, period, ph, cpu, slices) = " 204 printf("(tid, wcet, period, ph, cpu, slices) = "
204 "(%d, %llu, %llu, %llu, %u, %u)\n", 205 "(%d, %llu, %llu, %llu, %u, %u)\n",
205 task_id, rt->exec_cost, rt->period, rt->phase, cpu, sliceno); 206 task_id, rt->exec_cost, rt->period, rt->phase, cpu, sliceno);
206 if (sliceno > 0) { 207 if (sliceno > 0) {
207 memset(&rt->semi_part, 0, sizeof(struct edf_wm_params)); 208 memset(&rt->semi_part, 0, sizeof(struct edf_wm_params));
208 ret = parse_edfwm_slice(ts, sliceno, task_id, 209 ret = parse_edfwm_slice(ts, sliceno, task_id,
209 (struct edf_wm_params*) &rt->semi_part); 210 (struct edf_wm_params*) &rt->semi_part);
210 if (ret < 0) 211 if (ret < 0)
211 goto err; 212 goto err;
212 }
213 } 213 }
214 if (ferror(ts))
215 goto err;
216 214
217 return EOF; 215 return 0;
218 216
219err: 217err:
220 fprintf(stderr, "Error parsing file\n"); 218 fprintf(stderr, "Error parsing file\n");
@@ -287,11 +285,11 @@ int main(int argc, char** argv)
287 285
288 memset(&rt, 0, sizeof(struct rt_task)); 286 memset(&rt, 0, sizeof(struct rt_task));
289 287
290 while (parse_edfwm_ts_file(file, &rt) != EOF) { 288 if (parse_edfwm_ts_file(file, &rt) < 0)
289 bail_out("Could not parse file\n");
291 290
292 if (sporadic_task_ns_semi(&rt) < 0) 291 if (sporadic_task_ns_semi(&rt) < 0)
293 bail_out("could not setup rt task params"); 292 bail_out("could not setup rt task params");
294 }
295 293
296 fclose(file); 294 fclose(file);
297 295