/* To protect aginst the timer going away while the interrupt is queued, we require that the it_requeue_pending flag be set.  */
void do_schedule_next_timer(struct siginfo *info)
/* To protect aginst the timer going away while the interrupt is queued, we require that the it_requeue_pending flag be set.  */
void do_schedule_next_timer(struct siginfo *info)
{
	struct k_itimer *timr;
	unsigned long flags;
	timr = lock_timer(info->si_tid, &flags);
	if (timr && timr->it_requeue_pending == info->si_sys_private) {
		if (timr->it_clock < 0)
			posix_cpu_timer_schedule(timr);
		else
			schedule_next_timer(timr);
		info->si_overrun += timr->it_overrun_last;
	}
	if (timr)
		unlock_timer(timr, flags);
}