Man page - timer_getoverrun(2)

Packages contains this manual

Available languages:

en fr ru ro de

Manual

timer_getoverrun

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
ВЕРСИИ
СТАНДАРТЫ
ИСТОРИЯ
ОШИБКИ
ПРИМЕРЫ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

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

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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .