Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       timer_getoverrun - возвращает счётчик переполнения таймера POSIX (для каждого процесса отдельно)

LIBRARY

       Real-time library (librt, -lrt)

СИНТАКСИС

       #include <time.h>

       int timer_getoverrun(timer_t timerid);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       timer_getoverrun():
           _POSIX_C_SOURCE >= 199309L

ОПИСАНИЕ

       Вызов  timer_getoverrun() возвращает «счётчик переполнения» (overrun count) таймера, заданного в timerid.
       Приложение может  использовать  счётчик  переполнения  для  точного  вычисления  количества  срабатываний
       (expirations)  таймера,  которые бы произошли за указанный временной интервал. Переполнения таймера могут
       происходить при получении уведомлений о  срабатывании  (expiration  notifications)  посредством  сигналов
       (SIGEV_SIGNAL) и нитей (SIGEV_THREAD).

       Если  уведомление  о  срабатывании  доставляется  сигналом,  то  переполнение может происходить следующим
       образом. Независимо от того, используется ли для таймерных уведомлений сигнал реального времени или  нет,
       система ставит в очередь не более одного сигнала на таймер (так определено в POSIX.1. В противном случае,
       если  ставить  в очередь один сигнал на каждое срабатывание таймера, то легко можно превысить разрешённый
       размер очереди сигналов в системы). Из-за  задержек  системного  планировщика  или  временной  блокировки
       сигнала  может  возникать  задержка  между  генерацией  уведомляющего сигнала и его доставкой (delivered)
       (например, в обработчик сигнала) или приёмом (accepted) (например,  с  помощью  sigwaitinfo(2)).  В  этом
       промежутке  могут  произойти  дополнительные  срабатывания  таймера.  Переполнение счётчика таймера — это
       количество дополнительных срабатываний таймера,  которые  произошли  между  генерацией  и  доставкой  или
       принятием сигнала.

       Переполнение  таймера  также  может  произойти  когда уведомление о срабатывании доставляется через вызов
       нити, так как  здесь  может  возникать  произвольная  задержка  между  срабатыванием  таймера  и  вызовом
       уведомляемой нити, и в этом промежутке могут произойти дополнительные срабатывания таймера.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При  успешном выполнении timer_getoverrun() возвращается счётчик переполнений заданного таймера; он может
       быть равен 0, если если переполнений не было. При ошибке  возвращается  -1,  а  errno  устанавливается  в
       соответствующее значение кода ошибки.

ОШИБКИ

       EINVAL Значение timerid не является допустимым идентификатором таймера.

ВЕРСИИ

       Данный системный вызов появился в Linux 2.6.

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008.

ЗАМЕЧАНИЯ

       Когда уведомления таймера доставляются посредством сигналов (SIGEV_SIGNAL), в Linux также возможно узнать
       значение  счётчика  переполнения  из  поля  si_overrun  структуры  siginfo_t (смотрите sigaction(2)). Это
       позволяет приложению не делать лишнего системного вызова для получения  счётчика,  но  это  непереносимое
       расширение POSIX.1.

       В POSIX.1 переполнение таймера обсуждается только в контексте уведомлений таймера с помощью сигналов.

ДЕФЕКТЫ

       POSIX.1  specifies  that if the timer overrun count is equal to or greater than an implementation-defined
       maximum, DELAYTIMER_MAX, then timer_getoverrun()  should return DELAYTIMER_MAX.   However,  before  Linux
       4.19,  if the timer overrun value exceeds the maximum representable integer, the counter cycles, starting
       once more from low values.  Since Linux 4.19,  timer_getoverrun()   returns  DELAYTIMER_MAX  (defined  as
       INT_MAX in <limits.h>)  in this case (and the overrun value is reset to 0).

ПРИМЕРЫ

       Смотрите timer_create(2).

СМ. ТАКЖЕ

       clock_gettime(2),    sigaction(2),   signalfd(2),   sigwaitinfo(2),   timer_create(2),   timer_delete(2),
       timer_settime(2), signal(7), time(7)

ПЕРЕВОД

       Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>,  Dmitry
       Bolkhovskikh <d20052005@yandex.ru>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
       на man-pages-ru-talks@lists.sourceforge.net.

Linux man-pages 6.03                           30 октября 2022 г.                            timer_getoverrun(2)