aboutsummaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorJeremy Erickson <jerickso@cs.unc.edu>2010-11-02 12:37:14 -0400
committerJeremy Erickson <jerickso@cs.unc.edu>2010-11-02 12:37:14 -0400
commit2701b0022c6c409d2172753aed48d616e789b98c (patch)
treeb3a12e39e8f882374f78508ab2733594244fb256 /bin
parente9c900fae35e4e4730469e189ff17bf30518346a (diff)
Updated Mixed Criticality stuffwip-mc-jerickso
Diffstat (limited to 'bin')
-rw-r--r--bin/rt_launch.c20
-rw-r--r--bin/rtspin.c18
2 files changed, 32 insertions, 6 deletions
diff --git a/bin/rt_launch.c b/bin/rt_launch.c
index 3863031..f3fda65 100644
--- a/bin/rt_launch.c
+++ b/bin/rt_launch.c
@@ -29,11 +29,12 @@ int launch(void *task_info_p) {
29} 29}
30 30
31void usage(char *error) { 31void usage(char *error) {
32 fprintf(stderr, "%s\nUsage: rt_launch [-w][-v][-p cpu][-c hrt | srt | be] wcet period program [arg1 arg2 ...]\n" 32 fprintf(stderr, "%s\nUsage: rt_launch [-w][-v][-p cpu][-c hrt | srt | be][-r criticality] wcet period program [arg1 arg2 ...]\n"
33 "\t-w\tSynchronous release\n" 33 "\t-w\tSynchronous release\n"
34 "\t-v\tVerbose\n" 34 "\t-v\tVerbose\n"
35 "\t-p\tcpu (or initial cpu)\n" 35 "\t-p\tcpu (or initial cpu)\n"
36 "\t-c\tClass\n" 36 "\t-c\tClass\n"
37 "\t-r\tCriticality\n"
37 "\twcet, period in ms\n" 38 "\twcet, period in ms\n"
38 "\tprogram to be launched\n", 39 "\tprogram to be launched\n",
39 error); 40 error);
@@ -41,13 +42,14 @@ void usage(char *error) {
41} 42}
42 43
43 44
44#define OPTSTR "p:c:vw" 45#define OPTSTR "p:c:r:vw"
45 46
46int main(int argc, char** argv) 47int main(int argc, char** argv)
47{ 48{
48 int ret; 49 int ret;
49 lt_t wcet; 50 lt_t wcet;
50 lt_t period; 51 lt_t period;
52 int criticality = 0;
51 int migrate = 0; 53 int migrate = 0;
52 int cpu = 0; 54 int cpu = 0;
53 int opt; 55 int opt;
@@ -73,6 +75,17 @@ int main(int argc, char** argv)
73 if (class == -1) 75 if (class == -1)
74 usage("Unknown task class."); 76 usage("Unknown task class.");
75 break; 77 break;
78 case 'r':
79 criticality = atoi(optarg);
80 if (criticality > 1){
81 if (criticality > 3){
82 class = RT_CLASS_BEST_EFFORT;
83 }
84 else{
85 class = RT_CLASS_SOFT;
86 }
87 }
88 break;
76 89
77 case ':': 90 case ':':
78 usage("Argument missing."); 91 usage("Argument missing.");
@@ -107,7 +120,8 @@ int main(int argc, char** argv)
107 if (ret < 0) 120 if (ret < 0)
108 bail_out("could not migrate to target partition"); 121 bail_out("could not migrate to target partition");
109 } 122 }
110 ret = __create_rt_task(launch, &info, cpu, wcet, period, class); 123 ret = __create_rt_task(launch, &info, cpu, wcet, period,
124 criticality, class);
111 125
112 126
113 if (ret < 0) 127 if (ret < 0)
diff --git a/bin/rtspin.c b/bin/rtspin.c
index f291869..cfd5853 100644
--- a/bin/rtspin.c
+++ b/bin/rtspin.c
@@ -30,7 +30,7 @@ static double wctime()
30void usage(char *error) { 30void usage(char *error) {
31 fprintf(stderr, "Error: %s\n", error); 31 fprintf(stderr, "Error: %s\n", error);
32 fprintf(stderr, 32 fprintf(stderr,
33 "Usage: rt_spin [-w] [-p PARTITION] [-c CLASS] WCET PERIOD DURATION\n" 33 "Usage: rt_spin [-w] [-p PARTITION] [-c CLASS] [-r CRITICALITY] WCET PERIOD DURATION\n"
34 " rt_spin -l\n"); 34 " rt_spin -l\n");
35 exit(1); 35 exit(1);
36} 36}
@@ -133,7 +133,7 @@ static int job(double exec_time)
133 return 0; 133 return 0;
134} 134}
135 135
136#define OPTSTR "p:c:wld:v" 136#define OPTSTR "p:c:r:wld:v"
137 137
138int main(int argc, char** argv) 138int main(int argc, char** argv)
139{ 139{
@@ -143,6 +143,7 @@ int main(int argc, char** argv)
143 double wcet_ms, period_ms; 143 double wcet_ms, period_ms;
144 int migrate = 0; 144 int migrate = 0;
145 int cpu = 0; 145 int cpu = 0;
146 int criticality = 0;
146 int opt; 147 int opt;
147 int wait = 0; 148 int wait = 0;
148 int test_loop = 0; 149 int test_loop = 0;
@@ -167,6 +168,17 @@ int main(int argc, char** argv)
167 if (class == -1) 168 if (class == -1)
168 usage("Unknown task class."); 169 usage("Unknown task class.");
169 break; 170 break;
171 case 'r':
172 criticality = atoi(optarg);
173 if (criticality > 1){
174 if (criticality > 3){
175 class = RT_CLASS_BEST_EFFORT;
176 }
177 else{
178 class = RT_CLASS_SOFT;
179 }
180 }
181 break;
170 case 'l': 182 case 'l':
171 test_loop = 1; 183 test_loop = 1;
172 break; 184 break;
@@ -221,7 +233,7 @@ int main(int argc, char** argv)
221 bail_out("could not migrate to target partition"); 233 bail_out("could not migrate to target partition");
222 } 234 }
223 235
224 ret = sporadic_task_ns(wcet, period, 0, cpu, class, NO_ENFORCEMENT, migrate); 236 ret = sporadic_task_ns(wcet, period, 0, cpu, criticality, class, NO_ENFORCEMENT, migrate);
225 237
226 if (ret < 0) 238 if (ret < 0)
227 bail_out("could not setup rt task params"); 239 bail_out("could not setup rt task params");