Example SPAK code for finding the factor by which the WCET of each task, taken separately, must be scaled to make the set feasible:
int i;

max_resp = 1000000;

ts = create_task_set (18, 10, 500, 0,
"audsley93_t3",
1000, 0, 0, 0,
"Tindell92_restricted");

//                       C       T      D  J  B  name
new_simple_task (ts,  3500, 200000,  5000, 0, 0, "t1");
new_simple_task (ts,  2000,  25000, 25000, 0, 0, "t2");
new_simple_task (ts,  5000,  25000, 25000, 0, 0, "t3");
new_simple_task (ts,  1000,  40000, 40000, 0, 0, "t4");
new_simple_task (ts,  9000,  50000, 50000, 0, 0, "t5");
new_simple_task (ts,  5000,  50000, 50000, 0, 0, "t6");
new_simple_task (ts,  8000,  59000, 59000, 0, 0, "t7");
new_simple_task (ts, 12000,  80000, 80000, 0, 0, "t8");
new_simple_task (ts,  2000,  80000, 80000, 0, 0, "t9");

make_all_preemptible (ts);
set_priorities (ts, DM);

for (i=0; i<=9; i++) {
time_value orig = get_wcet (ts, i);
double scale;

for (scale = 1.0; scale > 0; scale -= 0.001) {
set_wcet (ts, i, orig * scale);
if (feasible (ts, FALSE) == num_tasks (ts)) {
printf ("task %d : WCET must be scaled by %f to make the set feasible\n",
i, scale);
goto out;
}
}
printf ("task %d : no scaling of this task can make the set feasible!\n", i);

out:
set_wcet (ts, i, orig);
}

Back to the main SPAK page.