diff options
-rw-r--r-- | bin/common.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/bin/common.c b/bin/common.c index ece9849..4fd24e1 100644 --- a/bin/common.c +++ b/bin/common.c | |||
@@ -38,12 +38,16 @@ void bail_out(const char* msg) | |||
38 | * <task_id, cpu, deadline (from job release), budget, offset> . | 38 | * <task_id, cpu, deadline (from job release), budget, offset> . |
39 | */ | 39 | */ |
40 | int parse_edfwm_slice(FILE *ts, int slices_no, int task_id, | 40 | int parse_edfwm_slice(FILE *ts, int slices_no, int task_id, |
41 | struct edf_wm_params *wm) | 41 | struct rt_task *rt) |
42 | { | 42 | { |
43 | int i, tid; | 43 | int i, tid; |
44 | unsigned int cpu; | 44 | unsigned int cpu; |
45 | double deadline, budget, offset; | 45 | double deadline, budget, offset; |
46 | 46 | ||
47 | lt_t total_budget = 0; | ||
48 | |||
49 | struct edf_wm_params* wm = (struct edf_wm_params*) &rt->semi_part; | ||
50 | |||
47 | for (i = 0; i < slices_no; i++) { | 51 | for (i = 0; i < slices_no; i++) { |
48 | 52 | ||
49 | if (fscanf(ts, "%d %u %lf %lf %lf\n", &tid, &cpu, | 53 | if (fscanf(ts, "%d %u %lf %lf %lf\n", &tid, &cpu, |
@@ -70,6 +74,8 @@ int parse_edfwm_slice(FILE *ts, int slices_no, int task_id, | |||
70 | wm->slices[i].budget); | 74 | wm->slices[i].budget); |
71 | return -1; | 75 | return -1; |
72 | } | 76 | } |
77 | |||
78 | total_budget += wm->slices[i].budget; | ||
73 | } | 79 | } |
74 | 80 | ||
75 | if (ferror(ts)) { | 81 | if (ferror(ts)) { |
@@ -78,6 +84,7 @@ int parse_edfwm_slice(FILE *ts, int slices_no, int task_id, | |||
78 | } | 84 | } |
79 | } | 85 | } |
80 | wm->count = slices_no; | 86 | wm->count = slices_no; |
87 | rt->exec_cost = total_budget; | ||
81 | printf("--- total %u slices ---\n", wm->count); | 88 | printf("--- total %u slices ---\n", wm->count); |
82 | return 0; | 89 | return 0; |
83 | } | 90 | } |
@@ -109,8 +116,7 @@ int parse_edfwm_ts_file(FILE *ts, struct rt_task *rt) | |||
109 | task_id, rt->exec_cost, rt->period, rt->phase, cpu, sliceno); | 116 | task_id, rt->exec_cost, rt->period, rt->phase, cpu, sliceno); |
110 | if (sliceno > 0) { | 117 | if (sliceno > 0) { |
111 | memset(&rt->semi_part, 0, sizeof(struct edf_wm_params)); | 118 | memset(&rt->semi_part, 0, sizeof(struct edf_wm_params)); |
112 | ret = parse_edfwm_slice(ts, sliceno, task_id, | 119 | ret = parse_edfwm_slice(ts, sliceno, task_id, rt); |
113 | (struct edf_wm_params*) &rt->semi_part); | ||
114 | if (ret < 0) | 120 | if (ret < 0) |
115 | goto err; | 121 | goto err; |
116 | } | 122 | } |