.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2009 Linux Foundation, written by Michael Kerrisk .\" .\" .\" %%%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 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH TIMER_GETOVERRUN 2 "21 декабря 2020 г." Linux "Руководство программиста Linux" .SH ИМЯ timer_getoverrun \- возвращает счётчик переполнения таймера POSIX (для каждого процесса отдельно) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBint timer_getoverrun(timer_t \fP\fItimerid\fP\fB);\fP .fi .PP Компонуется при указании параметра \fI\-lrt\fP. .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBtimer_getoverrun\fP(): _POSIX_C_SOURCE\ >=\ 199309L .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 ВЕРСИИ Данный системный вызов появился в Linux 2.6. .SH "СООТВЕТСТВИЕ СТАНДАРТАМ" POSIX.1\-2001, POSIX.1\-2008. .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 ДЕФЕКТЫ .\" 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) .SH ЗАМЕЧАНИЯ Эта страница является частью проекта Linux \fIman\-pages\fP версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу \%https://www.kernel.org/doc/man\-pages/. .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 .