diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-09-22 14:49:59 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-09-22 14:49:59 -0400 |
commit | 626f116df35e97e523aca3b2304b91770883826c (patch) | |
tree | 19e564c8054b7b87934067f4bd0bd9a474556a82 | |
parent | 104d98393aa46c6b1add0c73b7736a65af5c214e (diff) | |
parent | 6fc64ec121241607139ecef9ec2bd9be16603dde (diff) |
Merge branch 'edf-wm' of ssh://cvs.cs.unc.edu/cvs/proj/litmus/repo/liblitmus2010 into wip-edf-wm
Conflicts:
bin/common.c
-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 | } |