From 128da49ce7b85ea02f98618706a52c5f73a3f1d0 Mon Sep 17 00:00:00 2001 From: Andrea Bastoni Date: Wed, 22 Sep 2010 13:41:43 -0400 Subject: Correclty invoking set_rt_param syscall. --- bin/rt_launch_edfwm.c | 46 +++++++++++++++++++++++----------------------- bin/rtspin_edfwm.c | 42 ++++++++++++++++++++---------------------- 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, return -1; } } - return 1; + return 0; } /* 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) ret = fscanf(ts, "%d %lf %lf %lf %d %d\n", &task_id, &fwcet, &fperiod, &fphase, &cpu, &sliceno); - if (ret != EOF) { + if (ferror(ts)) + goto err; - rt->exec_cost = fms_to_ns(fwcet); - rt->period = fms_to_ns(fperiod); - rt->phase = fms_to_ns(fphase); - rt->cpu = cpu; - rt->cls = RT_CLASS_HARD; - rt->budget_policy = PRECISE_ENFORCEMENT; + rt->exec_cost = fms_to_ns(fwcet); + rt->period = fms_to_ns(fperiod); + rt->phase = fms_to_ns(fphase); + rt->cpu = cpu; + rt->cls = RT_CLASS_HARD; + rt->budget_policy = PRECISE_ENFORCEMENT; - printf("(tid, wcet, period, ph, cpu, slices) = " + printf("(tid, wcet, period, ph, cpu, slices) = " "(%d, %llu, %llu, %llu, %u, %u)\n", task_id, rt->exec_cost, rt->period, rt->phase, cpu, sliceno); - if (sliceno > 0) { - memset(&rt->semi_part, 0, sizeof(struct edf_wm_params)); - ret = parse_edfwm_slice(ts, sliceno, task_id, + + if (sliceno > 0) { + memset(&rt->semi_part, 0, sizeof(struct edf_wm_params)); + ret = parse_edfwm_slice(ts, sliceno, task_id, (struct edf_wm_params*) &rt->semi_part); - if (ret < 0) - goto err; - } + if (ret < 0) + goto err; } - if (ferror(ts)) - goto err; - return EOF; + return 0; err: fprintf(stderr, "Error parsing file\n"); @@ -125,7 +124,7 @@ err: #define OPTSTR "w" -int main(int argc, char** argv) +int main(int argc, char** argv) { int ret; int wait = 0; @@ -162,11 +161,11 @@ int main(int argc, char** argv) memset(&rt, 0, sizeof(struct rt_task)); - while (parse_edfwm_ts_file(file, &rt) != EOF) { + if (parse_edfwm_ts_file(file, &rt) < 0) + bail_out("Could not parse file\n"); - if (sporadic_task_ns_semi(&rt) < 0) - bail_out("could not setup rt task params"); - } + if (sporadic_task_ns_semi(&rt) < 0) + bail_out("could not setup rt task params"); fclose(file); @@ -181,3 +180,4 @@ int main(int argc, char** argv) return 0; } + 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, return -1; } } - return 1; + return 0; } /* 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) ret = fscanf(ts, "%d %lf %lf %lf %d %d\n", &task_id, &fwcet, &fperiod, &fphase, &cpu, &sliceno); - if (ret != EOF) { + if (ferror(ts)) + goto err; - rt->exec_cost = fms_to_ns(fwcet); - rt->period = fms_to_ns(fperiod); - rt->phase = fms_to_ns(fphase); - rt->cpu = cpu; - rt->cls = RT_CLASS_HARD; - rt->budget_policy = PRECISE_ENFORCEMENT; + rt->exec_cost = fms_to_ns(fwcet); + rt->period = fms_to_ns(fperiod); + rt->phase = fms_to_ns(fphase); + rt->cpu = cpu; + rt->cls = RT_CLASS_HARD; + rt->budget_policy = PRECISE_ENFORCEMENT; - printf("(tid, wcet, period, ph, cpu, slices) = " + printf("(tid, wcet, period, ph, cpu, slices) = " "(%d, %llu, %llu, %llu, %u, %u)\n", task_id, rt->exec_cost, rt->period, rt->phase, cpu, sliceno); - if (sliceno > 0) { - memset(&rt->semi_part, 0, sizeof(struct edf_wm_params)); - ret = parse_edfwm_slice(ts, sliceno, task_id, + if (sliceno > 0) { + memset(&rt->semi_part, 0, sizeof(struct edf_wm_params)); + ret = parse_edfwm_slice(ts, sliceno, task_id, (struct edf_wm_params*) &rt->semi_part); - if (ret < 0) - goto err; - } + if (ret < 0) + goto err; } - if (ferror(ts)) - goto err; - return EOF; + return 0; err: fprintf(stderr, "Error parsing file\n"); @@ -287,11 +285,11 @@ int main(int argc, char** argv) memset(&rt, 0, sizeof(struct rt_task)); - while (parse_edfwm_ts_file(file, &rt) != EOF) { + if (parse_edfwm_ts_file(file, &rt) < 0) + bail_out("Could not parse file\n"); - if (sporadic_task_ns_semi(&rt) < 0) - bail_out("could not setup rt task params"); - } + if (sporadic_task_ns_semi(&rt) < 0) + bail_out("could not setup rt task params"); fclose(file); -- cgit v1.2.2