.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2009 Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH timer_getoverrun 2 "30 марта 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ timer_getoverrun \- возвращает счётчик переполнения таймера POSIX (для каждого процесса отдельно) .SH LIBRARY Real\-time library (\fIlibrt\fP, \fI\-lrt\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBint timer_getoverrun(timer_t \fP\fItimerid\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBtimer_getoverrun\fP(): .nf _POSIX_C_SOURCE >= 199309L .fi .SH ОПИСАНИЕ Вызов \fBtimer_getoverrun\fP() возвращает «счётчик переполнения» (overrun count) таймера, заданного в \fItimerid\fP. Приложение может использовать счётчик переполнения для точного вычисления количества срабатываний (expirations) таймера, которые бы произошли за указанный временной интервал. Переполнения таймера могут происходить при получении уведомлений о срабатывании (expiration notifications) посредством сигналов (\fBSIGEV_SIGNAL\fP) и нитей (\fBSIGEV_THREAD\fP). .PP Если уведомление о срабатывании доставляется сигналом, то переполнение может происходить следующим образом. Независимо от того, используется ли для таймерных уведомлений сигнал реального времени или нет, система ставит в очередь не более одного сигнала на таймер (так определено в POSIX.1. В противном случае, если ставить в очередь один сигнал на каждое срабатывание таймера, то легко можно превысить разрешённый размер очереди сигналов в системы). Из\-за задержек системного планировщика или временной блокировки сигнала может возникать задержка между генерацией уведомляющего сигнала и его доставкой (delivered) (например, в обработчик сигнала) или приёмом (accepted) (например, с помощью \fBsigwaitinfo\fP(2)). В этом промежутке могут произойти дополнительные срабатывания таймера. Переполнение счётчика таймера — это количество дополнительных срабатываний таймера, которые произошли между генерацией и доставкой или принятием сигнала. .PP Переполнение таймера также может произойти когда уведомление о срабатывании доставляется через вызов нити, так как здесь может возникать произвольная задержка между срабатыванием таймера и вызовом уведомляемой нити, и в этом промежутке могут произойти дополнительные срабатывания таймера. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBtimer_getoverrun\fP() возвращается счётчик переполнений заданного таймера; он может быть равен 0, если если переполнений не было. При ошибке возвращается \-1, а \fIerrno\fP устанавливается в соответствующее значение кода ошибки. .SH ОШИБКИ .TP \fBEINVAL\fP Значение \fItimerid\fP не является допустимым идентификатором таймера. .SH ВЕРСИИ Когда уведомления таймера доставляются посредством сигналов (\fBSIGEV_SIGNAL\fP), в Linux также возможно узнать значение счётчика переполнения из поля \fIsi_overrun\fP структуры \fIsiginfo_t\fP (смотрите \fBsigaction\fP(2)). Это позволяет приложению не делать лишнего системного вызова для получения счётчика, но это непереносимое расширение POSIX.1. .PP .\" FIXME . Austin bug filed, 11 Feb 09 .\" https://www.austingroupbugs.net/view.php?id=95 В POSIX.1 переполнение таймера обсуждается только в контексте уведомлений таймера с помощью сигналов. .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ Linux 2.6. POSIX.1\-2001. .SH ДЕФЕКТЫ .\" http://bugzilla.kernel.org/show_bug.cgi?id=12665 .\" commit 78c9c4dfbf8c04883941445a195276bb4bb92c76 POSIX.1 specifies that if the timer overrun count is equal to or greater than an implementation\-defined maximum, \fBDELAYTIMER_MAX\fP, then \fBtimer_getoverrun\fP() should return \fBDELAYTIMER_MAX\fP. 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, \fBtimer_getoverrun\fP() returns \fBDELAYTIMER_MAX\fP (defined as \fBINT_MAX\fP in \fI\fP) in this case (and the overrun value is reset to 0). .SH ПРИМЕРЫ Смотрите \fBtimer_create\fP(2). .SH "СМ. ТАКЖЕ" \fBclock_gettime\fP(2), \fBsigaction\fP(2), \fBsignalfd\fP(2), \fBsigwaitinfo\fP(2), \fBtimer_create\fP(2), \fBtimer_delete\fP(2), \fBtimer_settime\fP(2), \fBsignal\fP(7), \fBtime\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitry Bolkhovskikh , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .