diff options
| author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-04-26 13:42:00 -0400 |
|---|---|---|
| committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-29 17:35:03 -0400 |
| commit | 8fe2fb8bb1c1cd0194608bc783d0ce7029e8d869 (patch) | |
| tree | e01b2774ada53c3152bf87ea2bd919db4fcac78e | |
| parent | 5da9b3e7aab0755f6ca19738d33e218e02b19a41 (diff) | |
Measure timer re-arming in the proper location
hrtimers are properly rearmed during arm_release_timer() and no longer
after rescheduling (with the norqlock mechanism of 2008.3). This commit
accordingly updates the locations where measures are taken.
| -rw-r--r-- | kernel/sched.c | 4 | ||||
| -rw-r--r-- | litmus/rt_domain.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 1701eaebb79c..adb5e923cc61 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -5520,20 +5520,16 @@ need_resched_nonpreemptible: | |||
| 5520 | spin_unlock_irq(&rq->lock); | 5520 | spin_unlock_irq(&rq->lock); |
| 5521 | } | 5521 | } |
| 5522 | 5522 | ||
| 5523 | TS_SCHED2_START(current); | ||
| 5524 | sched_trace_task_switch_to(current); | 5523 | sched_trace_task_switch_to(current); |
| 5525 | 5524 | ||
| 5526 | post_schedule(rq); | 5525 | post_schedule(rq); |
| 5527 | 5526 | ||
| 5528 | if (unlikely(reacquire_kernel_lock(current) < 0)) { | 5527 | if (unlikely(reacquire_kernel_lock(current) < 0)) { |
| 5529 | TS_SCHED2_END(current); | ||
| 5530 | goto need_resched_nonpreemptible; | 5528 | goto need_resched_nonpreemptible; |
| 5531 | } | 5529 | } |
| 5532 | 5530 | ||
| 5533 | preempt_enable_no_resched(); | 5531 | preempt_enable_no_resched(); |
| 5534 | 5532 | ||
| 5535 | TS_SCHED2_END(current); | ||
| 5536 | |||
| 5537 | if (need_resched()) | 5533 | if (need_resched()) |
| 5538 | goto need_resched; | 5534 | goto need_resched; |
| 5539 | 5535 | ||
diff --git a/litmus/rt_domain.c b/litmus/rt_domain.c index 0ed6d5cbbfc5..609ff0f82abb 100644 --- a/litmus/rt_domain.c +++ b/litmus/rt_domain.c | |||
| @@ -301,6 +301,10 @@ void __add_release(rt_domain_t* rt, struct task_struct *task) | |||
| 301 | task->rt_param.domain = rt; | 301 | task->rt_param.domain = rt; |
| 302 | 302 | ||
| 303 | /* start release timer */ | 303 | /* start release timer */ |
| 304 | TS_SCHED2_START(task); | ||
| 305 | |||
| 304 | arm_release_timer(rt); | 306 | arm_release_timer(rt); |
| 307 | |||
| 308 | TS_SCHED2_END(task); | ||
| 305 | } | 309 | } |
| 306 | 310 | ||
