Suppose the following scenario for CLOCK_REALTIME
or
CLOCK_REALTIME_ALARM
timer that was created with
timerfd_create
():
(a) The timer has been started (timerfd_settime
()) with the
TFD_TIMER_ABSTIME
and TFD_TIMER_CANCEL_ON_SET
flags;
(b) A discontinuous change (e.g., settimeofday(2)) is
subsequently made to the CLOCK_REALTIME
clock; and
(c) the caller once more calls timerfd_settime
() to rearm the
timer (without first doing a read(2) on the file descriptor).
In this case the following occurs:
• The timerfd_settime
() returns -1 with errno set to ECANCELED
.
(This enables the caller to know that the previous timer was
affected by a discontinuous change to the clock.)
• The timer is successfully rearmed with the settings provided in
the second timerfd_settime
() call. (This was probably an
implementation accident, but won't be fixed now, in case there
are applications that depend on this behaviour.)