Provided by: manpages-ru-dev_4.27.0-1_all 

НАИМЕНОВАНИЕ
timer_getoverrun - возвращает счётчик переполнения таймера POSIX (для каждого процесса отдельно)
БИБЛИОТЕКА
Библиотека реального времени (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 не является допустимым идентификатором таймера.
ВЕРСИИ
Когда уведомления таймера доставляются посредством сигналов (SIGEV_SIGNAL), в Linux также возможно узнать
значение счётчика переполнения из поля si_overrun структуры siginfo_t (смотрите sigaction(2)). Это
позволяет приложению не делать лишнего системного вызова для получения счётчика, но это непереносимое
расширение POSIX.1.
В POSIX.1 переполнение таймера обсуждается только в контексте уведомлений таймера с помощью сигналов.
СТАНДАРТЫ
POSIX.1-2008.
ИСТОРИЯ
Linux 2.6. POSIX.1-2001.
ОШИБКИ
POSIX.1 определяет, что если счетчик переполнения таймера равен или больше максимума, определенного
реализацией, DELAYTIMER_MAX, то timer_getoverrun() должен вернуть DELAYTIMER_MAX. Однако до Linux 4.19,
если значение переполнения таймера превышает максимальное представимое целое число, счетчик циклически
запускается, начиная еще раз с низких значений. Начиная с Linux 4.19, timer_getoverrun() возвращает
DELAYTIMER_MAX (определенный как INT_MAX в <limits.h>) в этом случае (и значение переполнения
сбрасывается на 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> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной
лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских
переводчиков.
Справочные страницы Linux 6.9.1 2 мая 2024 г. timer_getoverrun(2)