summaryrefslogtreecommitdiff
path: root/src/atimer.c
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-11-07 04:55:02 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-11-07 04:55:02 +0100
commit858868e36dbb8fe30fb5ae6a59ebb2fd123e307d (patch)
tree05290443967241f66d34d6bac842f3c10560001d /src/atimer.c
parente20c27c770e3245c9934d82ccf66068d0a88b495 (diff)
downloademacs-858868e36dbb8fe30fb5ae6a59ebb2fd123e307d.tar.gz
Actually start the alarms in atimer
* src/atimer.c (set_alarm): Actually start both timerfd and alarms (attempted in 4107549a).
Diffstat (limited to 'src/atimer.c')
-rw-r--r--src/atimer.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/atimer.c b/src/atimer.c
index ab47bbf9688..490c21bff16 100644
--- a/src/atimer.c
+++ b/src/atimer.c
@@ -305,6 +305,7 @@ set_alarm (void)
#ifdef HAVE_ITIMERSPEC
if (0 <= timerfd || alarm_timer_ok)
{
+ bool exit = false;
struct itimerspec ispec;
ispec.it_value = atimers->expiration;
ispec.it_interval.tv_sec = ispec.it_interval.tv_nsec = 0;
@@ -312,11 +313,14 @@ set_alarm (void)
if (timerfd_settime (timerfd, TFD_TIMER_ABSTIME, &ispec, 0) == 0)
{
add_timer_wait_descriptor (timerfd);
- return;
+ exit = true;
}
# endif
if (alarm_timer_ok
&& timer_settime (alarm_timer, TIMER_ABSTIME, &ispec, 0) == 0)
+ exit = true;
+
+ if (exit)
return;
}
#endif
@@ -333,9 +337,8 @@ set_alarm (void)
memset (&it, 0, sizeof it);
it.it_value = make_timeval (interval);
setitimer (ITIMER_REAL, &it, 0);
-#else /* not HAVE_SETITIMER */
- alarm (max (interval.tv_sec, 1));
#endif /* not HAVE_SETITIMER */
+ alarm (max (interval.tv_sec, 1));
}
}