diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-04-26 17:45:05 -0400 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-04-26 17:45:05 -0400 |
commit | e64781ccf8852ebfbb62a11a02112b0ccffaa600 (patch) | |
tree | d1e99010ccc0614b9c4a320b11a50375552e9b07 | |
parent | a030ea79736cd5aa4aef9800f7ce689fbcab5970 (diff) |
sched_color: Fixed two bugs causing crashing on experiment restart and a rare race conditionwip-color-jlh
-rw-r--r-- | include/litmus/color.h | 4 | ||||
-rw-r--r-- | litmus/sched_color.c | 7 |
2 files changed, 8 insertions, 3 deletions
diff --git a/include/litmus/color.h b/include/litmus/color.h index 8f66bf50d5b7..cdf34b649a6d 100644 --- a/include/litmus/color.h +++ b/include/litmus/color.h | |||
@@ -1,8 +1,8 @@ | |||
1 | #ifndef LITMUS_COLOR_H | 1 | #ifndef LITMUS_COLOR_H |
2 | #define LITMUS_COLOR_H | 2 | #define LITMUS_COLOR_H |
3 | 3 | ||
4 | #define NUM_COLORS 10 | 4 | #define NUM_COLORS 64 |
5 | #define NUM_WAYS 5 | 5 | #define NUM_WAYS 12 |
6 | 6 | ||
7 | int color_server_params(int cpu, unsigned long *wcet, unsigned long *period); | 7 | int color_server_params(int cpu, unsigned long *wcet, unsigned long *period); |
8 | 8 | ||
diff --git a/litmus/sched_color.c b/litmus/sched_color.c index d5408c645644..98a46bb1b06f 100644 --- a/litmus/sched_color.c +++ b/litmus/sched_color.c | |||
@@ -71,7 +71,10 @@ static void requeue(rt_domain_t *dom, struct task_struct* t) | |||
71 | return; | 71 | return; |
72 | 72 | ||
73 | TRACE_TASK(t, "Requeueing\n"); | 73 | TRACE_TASK(t, "Requeueing\n"); |
74 | BUG_ON(is_queued(t)); | 74 | if (is_queued(t)) { |
75 | TRACE_TASK(t, "Already queued!\n"); | ||
76 | return; | ||
77 | } | ||
75 | 78 | ||
76 | set_rt_flags(t, RT_F_RUNNING); | 79 | set_rt_flags(t, RT_F_RUNNING); |
77 | if (is_released(t, litmus_clock())) | 80 | if (is_released(t, litmus_clock())) |
@@ -343,7 +346,9 @@ static void fifo_update(struct rt_server *server) | |||
343 | schedule_server(&fserver->server); | 346 | schedule_server(&fserver->server); |
344 | 347 | ||
345 | /* Reserve needed resources */ | 348 | /* Reserve needed resources */ |
349 | raw_spin_lock(&dgl_lock); | ||
346 | acquire_resources(fserver->task); | 350 | acquire_resources(fserver->task); |
351 | raw_spin_unlock(&dgl_lock); | ||
347 | } | 352 | } |
348 | } | 353 | } |
349 | 354 | ||