mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-26 23:31:55 -08:00
Always start the SIGALRM atimers
* src/atimer.c (init_atimer): Always start the SIGALRM alarms, even if we're using timerfd (bug#19776). See long, long discussion in the bug report for why this is necessary.
This commit is contained in:
parent
14d835a298
commit
4107549a61
1 changed files with 10 additions and 9 deletions
19
src/atimer.c
19
src/atimer.c
|
|
@ -583,15 +583,16 @@ init_atimer (void)
|
|||
timerfd = (egetenv ("EMACS_IGNORE_TIMERFD") || have_buggy_timerfd () ? -1 :
|
||||
timerfd_create (CLOCK_REALTIME, TFD_NONBLOCK | TFD_CLOEXEC));
|
||||
# endif
|
||||
if (timerfd < 0)
|
||||
{
|
||||
struct sigevent sigev;
|
||||
sigev.sigev_notify = SIGEV_SIGNAL;
|
||||
sigev.sigev_signo = SIGALRM;
|
||||
sigev.sigev_value.sival_ptr = &alarm_timer;
|
||||
alarm_timer_ok
|
||||
= timer_create (CLOCK_REALTIME, &sigev, &alarm_timer) == 0;
|
||||
}
|
||||
/* We're starting the alarms even if we have timerfd, because
|
||||
timerfd events do not fired while Emacs Lisp is busy. This might
|
||||
or might not mean that the timerfd code doesn't really give us
|
||||
anything and should be removed, see discussion in bug#19776. */
|
||||
struct sigevent sigev;
|
||||
sigev.sigev_notify = SIGEV_SIGNAL;
|
||||
sigev.sigev_signo = SIGALRM;
|
||||
sigev.sigev_value.sival_ptr = &alarm_timer;
|
||||
alarm_timer_ok
|
||||
= timer_create (CLOCK_REALTIME, &sigev, &alarm_timer) == 0;
|
||||
#endif
|
||||
free_atimers = stopped_atimers = atimers = NULL;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue