.\" Copyright (c) 2009 Linux Foundation, written by Michael Kerrisk
.\"     <mtk.manpages@gmail.com>
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.TH TIMER_GETOVERRUN 2 2021-03-22 Linux "Linux Programmer's Manual"
.SH NAME
timer_getoverrun \- get overrun count for a POSIX per-process timer
.SH SYNOPSIS
.nf
.B  #include <time.h>
.PP
.BI "int timer_getoverrun(timer_t " timerid );
.fi
.PP
Link with \fI\-lrt\fP.
.PP
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.PP
.BR timer_getoverrun ():
.nf
    _POSIX_C_SOURCE >= 199309L
.fi
.SH DESCRIPTION
.BR timer_getoverrun ()
returns the "overrun count" for the timer referred to by
.IR timerid .
An application can use the overrun count to accurately calculate the number
of timer expirations that would have occurred over a given time interval.
Timer overruns can occur both when receiving expiration notifications
via signals
.RB ( SIGEV_SIGNAL ),
and via threads
.RB ( SIGEV_THREAD ).
.PP
When expiration notifications are delivered via a signal,
overruns can occur as follows.
Regardless of whether or not a real-time signal is used for
timer notifications,
the system queues at most one signal per timer.
(This is the behavior specified by POSIX.1.
The alternative, queuing one signal for each timer expiration,
could easily result in overflowing the allowed limits for
queued signals on the system.)
Because of system scheduling delays,
or because the signal may be temporarily blocked,
there can be a delay between the time when the notification
signal is generated and the time when it
is delivered (e.g., caught by a signal handler) or accepted (e.g., using
.BR sigwaitinfo (2)).
In this interval, further timer expirations may occur.
The timer overrun count is the number of additional
timer expirations that occurred between the time when the signal
was generated and when it was delivered or accepted.
.PP
Timer overruns can also occur when expiration notifications
are delivered via invocation of a thread,
since there may be an arbitrary delay between an expiration of the timer
and the invocation of the notification thread,
and in that delay interval, additional timer expirations may occur.
.SH RETURN VALUE
On success,
.BR timer_getoverrun ()
returns the overrun count of the specified timer;
this count may be 0 if no overruns have occurred.
On failure, \-1 is returned, and
.I errno
is set to indicate the error.
.SH ERRORS
.TP
.B EINVAL
.I timerid
is not a valid timer ID.
.SH VERSIONS
This system call is available since Linux 2.6.
.SH CONFORMING TO
POSIX.1-2001, POSIX.1-2008.
.SH NOTES
When timer notifications are delivered via signals
.RB ( SIGEV_SIGNAL ),
on Linux it is also possible to obtain the overrun count via the
.I si_overrun
field of the
.I siginfo_t
structure (see
.BR sigaction (2)).
This allows an application to avoid the overhead of making
a system call to obtain the overrun count,
but is a nonportable extension to POSIX.1.
.PP
POSIX.1 discusses timer overruns only in the context of
timer notifications using signals.
.\" FIXME . Austin bug filed, 11 Feb 09
.\" https://www.austingroupbugs.net/view.php?id=95
.SH BUGS
POSIX.1 specifies that if the timer overrun count
is equal to or greater than an implementation-defined maximum,
.BR DELAYTIMER_MAX ,
then
.BR timer_getoverrun ()
should return
.BR DELAYTIMER_MAX .
However, before Linux 4.19,
.\" http://bugzilla.kernel.org/show_bug.cgi?id=12665
if the timer overrun value exceeds the maximum representable integer,
the counter cycles, starting once more from low values.
Since Linux 4.19,
.\" commit 78c9c4dfbf8c04883941445a195276bb4bb92c76
.BR timer_getoverrun ()
returns
.B DELAYTIMER_MAX
(defined as
.B INT_MAX
in
.IR <limits.h> )
in this case (and the overrun value is reset to 0).
.SH EXAMPLES
See
.BR timer_create (2).
.SH SEE ALSO
.BR clock_gettime (2),
.BR sigaction (2),
.BR signalfd (2),
.BR sigwaitinfo (2),
.BR timer_create (2),
.BR timer_delete (2),
.BR timer_settime (2),
.BR signal (7),
.BR time (7)
