aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Kenna <cjk@cs.unc.edu>2011-09-08 10:27:22 -0400
committerChristopher Kenna <cjk@cs.unc.edu>2011-09-08 10:27:22 -0400
commit1e44b612edef027191fc3fa573d3396e1aacaedf (patch)
treea583bd7fdc02bc34e0a2736a8047eb3734a7ac2d
parentf143b41261e8ae9cc48e8b68af2679ef332bd9e4 (diff)
Add level-A mixed criticality ID parameter.
-rw-r--r--bin/rtspin.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/bin/rtspin.c b/bin/rtspin.c
index c5a2600..728afb5 100644
--- a/bin/rtspin.c
+++ b/bin/rtspin.c
@@ -24,7 +24,7 @@ static void usage(char *error) {
24 " rt_spin -l\n" 24 " rt_spin -l\n"
25 "\n" 25 "\n"
26 "COMMON-OPTS = [-w] [-p PARTITION] [-c CLASS] [-s SCALE]\n" 26 "COMMON-OPTS = [-w] [-p PARTITION] [-c CLASS] [-s SCALE]\n"
27 " [-r CRITICALITY = [a|b|c|d]]\n" 27 " [-r CRITICALITY = [a|b|c|d]] [-i MC-LVL-A-ID]\n"
28 "\n" 28 "\n"
29 "WCET and PERIOD are milliseconds, DURATION is seconds.\n"); 29 "WCET and PERIOD are milliseconds, DURATION is seconds.\n");
30 exit(EXIT_FAILURE); 30 exit(EXIT_FAILURE);
@@ -179,7 +179,7 @@ enum crit_level str2crit(const char* str)
179 return NUM_CRIT_LEVELS; 179 return NUM_CRIT_LEVELS;
180} 180}
181 181
182#define OPTSTR "p:c:wlveo:f:s:r:" 182#define OPTSTR "p:c:wlveo:f:s:r:i:"
183 183
184int main(int argc, char** argv) 184int main(int argc, char** argv)
185{ 185{
@@ -200,8 +200,7 @@ int main(int argc, char** argv)
200 double scale = 1.0; 200 double scale = 1.0;
201 task_class_t class = RT_CLASS_HARD; 201 task_class_t class = RT_CLASS_HARD;
202 int cur_job, num_jobs; 202 int cur_job, num_jobs;
203 enum crit_level crit = NUM_CRIT_LEVELS; 203 struct mc_task mc_task = { .crit = NUM_CRIT_LEVELS, .lvl_a_id = -1 };
204 struct mc_task mc_task;
205 204
206 progname = argv[0]; 205 progname = argv[0];
207 206
@@ -235,10 +234,13 @@ int main(int argc, char** argv)
235 scale = atof(optarg); 234 scale = atof(optarg);
236 break; 235 break;
237 case 'r': 236 case 'r':
238 crit = str2crit(optarg); 237 mc_task.crit = str2crit(optarg);
239 if (NUM_CRIT_LEVELS == crit) 238 if (NUM_CRIT_LEVELS == mc_task.crit)
240 usage("Bad crit level."); 239 usage("Bad crit level.");
241 break; 240 break;
241 case 'i':
242 mc_task.lvl_a_id = atoi(optarg);
243 break;
242 case ':': 244 case ':':
243 usage("Argument missing."); 245 usage("Argument missing.");
244 break; 246 break;
@@ -306,9 +308,8 @@ int main(int argc, char** argv)
306 if (ret < 0) 308 if (ret < 0)
307 bail_out("could not setup rt task params"); 309 bail_out("could not setup rt task params");
308 310
309 if (NUM_CRIT_LEVELS != crit) 311 if (NUM_CRIT_LEVELS != mc_task.crit)
310 { 312 {
311 mc_task.crit = crit;
312 ret = set_rt_task_mc_param(gettid(), &mc_task); 313 ret = set_rt_task_mc_param(gettid(), &mc_task);
313 if (ret < 0) 314 if (ret < 0)
314 bail_out("could not setup rt mixed criticality params"); 315 bail_out("could not setup rt mixed criticality params");