aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-09-28 00:35:16 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-09-28 00:35:16 -0400
commit728e11fc0de9cee375fce98502b68aef3acff695 (patch)
tree92a07995f484c81557943deedf3a0eac366f3657
parent987e83646701cee38c6378c84017cc2aabde39a9 (diff)
Bugfix: clear the state of pulled hrtimers during tear-down
The state of pulled hrtimers is reset during reinit_release_heap() as this timers normally only controls remote releases. In NPS-F the state of a pulled timer is not reset once the pulling is over and therefore timers are no longer pulled (and restarted) upon plugin reloading. FIXME list: moving reset of HRTIMER_START_ON_INACTIVE in on_release_timer() ?
-rw-r--r--litmus/sched_npsf.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/litmus/sched_npsf.c b/litmus/sched_npsf.c
index 9f45f9632e97..b322b0a5b362 100644
--- a/litmus/sched_npsf.c
+++ b/litmus/sched_npsf.c
@@ -1030,6 +1030,10 @@ void npsf_hrtimers_cleanup(void)
1030 do { 1030 do {
1031 for_each_online_cpu(cpu) { 1031 for_each_online_cpu(cpu) {
1032 entry = &per_cpu(npsf_cpu_entries, cpu); 1032 entry = &per_cpu(npsf_cpu_entries, cpu);
1033
1034 /* be sure to cleanup pull_timer state */
1035 atomic_set(&entry->info.state, HRTIMER_START_ON_INACTIVE);
1036
1033 /* if callback active, skip it for now and redo later */ 1037 /* if callback active, skip it for now and redo later */
1034 if (hrtimer_try_to_cancel(&entry->timer) == -1) { 1038 if (hrtimer_try_to_cancel(&entry->timer) == -1) {
1035 redo = 1; 1039 redo = 1;
@@ -1042,6 +1046,8 @@ void npsf_hrtimers_cleanup(void)
1042 } 1046 }
1043 } 1047 }
1044 } while (redo); 1048 } while (redo);
1049
1050 printk(KERN_INFO "npsf hrtimers deleted\n");
1045} 1051}
1046 1052
1047static void cleanup_npsf(void) 1053static void cleanup_npsf(void)