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

НАИМЕНОВАНИЕ

       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)