diff options
Diffstat (limited to 'litmus/rt_domain.c')
| -rw-r--r-- | litmus/rt_domain.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/litmus/rt_domain.c b/litmus/rt_domain.c index 8d5db6050723..26f1cc48f865 100644 --- a/litmus/rt_domain.c +++ b/litmus/rt_domain.c | |||
| @@ -158,7 +158,9 @@ static void reinit_release_heap(struct task_struct* t) | |||
| 158 | 158 | ||
| 159 | /* initialize */ | 159 | /* initialize */ |
| 160 | bheap_init(&rh->heap); | 160 | bheap_init(&rh->heap); |
| 161 | #ifdef __ARCH_HAS_SEND_PULL_TIMERS | ||
| 161 | atomic_set(&rh->info.state, HRTIMER_START_ON_INACTIVE); | 162 | atomic_set(&rh->info.state, HRTIMER_START_ON_INACTIVE); |
| 163 | #endif | ||
| 162 | } | 164 | } |
| 163 | /* arm_release_timer() - start local release timer or trigger | 165 | /* arm_release_timer() - start local release timer or trigger |
| 164 | * remote timer (pull timer) | 166 | * remote timer (pull timer) |
| @@ -221,15 +223,19 @@ static void arm_release_timer(rt_domain_t *_rt) | |||
| 221 | * | 223 | * |
| 222 | * PINNED mode is ok on both local and remote CPU | 224 | * PINNED mode is ok on both local and remote CPU |
| 223 | */ | 225 | */ |
| 226 | #ifdef CONFIG_RELEASE_MASTER | ||
| 224 | if (rt->release_master == NO_CPU) | 227 | if (rt->release_master == NO_CPU) |
| 228 | #endif | ||
| 225 | __hrtimer_start_range_ns(&rh->timer, | 229 | __hrtimer_start_range_ns(&rh->timer, |
| 226 | ns_to_ktime(rh->release_time), | 230 | ns_to_ktime(rh->release_time), |
| 227 | 0, HRTIMER_MODE_ABS_PINNED, 0); | 231 | 0, HRTIMER_MODE_ABS_PINNED, 0); |
| 232 | #ifdef CONFIG_RELEASE_MASTER | ||
| 228 | else | 233 | else |
| 229 | hrtimer_start_on(rt->release_master, | 234 | hrtimer_start_on(rt->release_master, |
| 230 | &rh->info, &rh->timer, | 235 | &rh->info, &rh->timer, |
| 231 | ns_to_ktime(rh->release_time), | 236 | ns_to_ktime(rh->release_time), |
| 232 | HRTIMER_MODE_ABS_PINNED); | 237 | HRTIMER_MODE_ABS_PINNED); |
| 238 | #endif | ||
| 233 | } else | 239 | } else |
| 234 | TRACE_TASK(t, "0x%p is not my timer\n", &rh->timer); | 240 | TRACE_TASK(t, "0x%p is not my timer\n", &rh->timer); |
| 235 | } | 241 | } |
| @@ -251,7 +257,9 @@ void rt_domain_init(rt_domain_t *rt, | |||
| 251 | if (!order) | 257 | if (!order) |
| 252 | order = dummy_order; | 258 | order = dummy_order; |
| 253 | 259 | ||
| 260 | #ifdef CONFIG_RELEASE_MASTER | ||
| 254 | rt->release_master = NO_CPU; | 261 | rt->release_master = NO_CPU; |
| 262 | #endif | ||
| 255 | 263 | ||
| 256 | bheap_init(&rt->ready_queue); | 264 | bheap_init(&rt->ready_queue); |
| 257 | INIT_LIST_HEAD(&rt->tobe_released); | 265 | INIT_LIST_HEAD(&rt->tobe_released); |
