aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-09-22 14:49:59 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-09-22 14:49:59 -0400
commit626f116df35e97e523aca3b2304b91770883826c (patch)
tree19e564c8054b7b87934067f4bd0bd9a474556a82
parent104d98393aa46c6b1add0c73b7736a65af5c214e (diff)
parent6fc64ec121241607139ecef9ec2bd9be16603dde (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.c12
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 */
40int parse_edfwm_slice(FILE *ts, int slices_no, int task_id, 40int 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 }