void rthal_timer_release(int cpu) { #ifdef CONFIG_GENERIC_CLOCKEVENTS ipipe_release_tickdev(cpu); #endif rthal_irq_release(RTHAL_TIMER_IRQ); if (rthal_ktimer_saved_mode == KTIMER_MODE_PERIODIC) rthal_timer_set_periodic(); else if (rthal_ktimer_saved_mode == KTIMER_MODE_ONESHOT) /* We need to keep the timing cycle alive for the kernel. */ rthal_trigger_irq(RTHAL_TIMER_IRQ); }
void rthal_timer_release(int cpu) { #ifdef CONFIG_IPIPE_CORE rthal_tickdev_release(cpu); #endif /* CONFIG_IPIPE_CORE */ if (--cpu_timers_requested > 0) return; #ifndef CONFIG_IPIPE_CORE rthal_irq_release(RTHAL_TIMER_IRQ); #endif /* !CONFIG_IPIPE_CORE */ rthal_timer_set_periodic(); }
void rthal_timer_release(int cpu) { ipipe_release_tickdev(cpu); if (--cpu_timers_requested > 0) return; #ifdef CONFIG_SMP rthal_irq_release(RTHAL_TIMER_IPI); #endif /* CONFIG_SMP */ rthal_irq_release(RTHAL_TIMER_IRQ); if (rthal_ktimer_saved_mode == KTIMER_MODE_PERIODIC) rthal_timer_set_periodic(); else if (rthal_ktimer_saved_mode == KTIMER_MODE_ONESHOT) rthal_timer_set_oneshot(0); }