timer_getoverrun

TIMER_GETOVERRUNÐ2ÑководÑÑво пÑогÑаммиÑÑа LiTIMER_GETOVERRUN(2)



ÐÐЯ
       timer_getoverrun - возвÑаÑÐ°ÐµÑ ÑÑÑÑÑик пеÑеполнениÑ
       ÑаймеÑа POSIX (Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пÑоÑеÑÑа оÑделÑно)

ÐÐÐÐÐ
       #include <time.h>

       int timer_getoverrun(timer_t timerid);

       ÐомпонÑеÑÑÑ Ð¿Ñи Ñказании паÑамеÑÑа -lrt.

   ТÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÐºÑоÑа ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑвойÑÑв Ð´Ð»Ñ 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 не ÑвлÑеÑÑÑ Ð´Ð¾Ð¿ÑÑÑимÑм
              иденÑиÑикаÑоÑом ÑаймеÑа.

ÐÐРСÐÐ
       ÐаннÑй ÑиÑÑемнÑй вÑзов поÑвилÑÑ Ð² Linux 2.6.

СÐÐТÐÐТСТÐÐРСТÐÐÐÐРТÐÐ
       POSIX.1-2001, POSIX.1-2008.

ÐÐÐÐЧÐÐÐЯ
       Ðогда ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑаймеÑа доÑÑавлÑÑÑÑÑ
       поÑÑедÑÑвом Ñигналов (SIGEV_SIGNAL), в Linux Ñакже
       возможно ÑзнаÑÑ Ð·Ð½Ð°Ñение ÑÑÑÑÑика
       пеÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸Ð· Ð¿Ð¾Ð»Ñ si_overrun ÑÑÑÑкÑÑÑÑ siginfo_t
       (ÑмоÑÑиÑе sigaction(2)). ÐÑо позволÑÐµÑ Ð¿ÑиложениÑ
       не делаÑÑ Ð»Ð¸Ñнего ÑиÑÑемного вÑзова длÑ
       полÑÑÐµÐ½Ð¸Ñ ÑÑÑÑÑика, но ÑÑо непеÑеноÑимое
       ÑаÑÑиÑение POSIX.1.

       Ð POSIX.1 пеÑеполнение ÑаймеÑа обÑÑждаеÑÑÑ
       ÑолÑко в конÑекÑÑе Ñведомлений ÑаймеÑа Ñ
       помоÑÑÑ Ñигналов.

ÐÐФÐÐТЫ
       Ð POSIX.1 Ñказано, ÑÑо еÑли ÑÑÑÑÑик пеÑеполнениÑ
       ÑаймеÑа болÑÑе или Ñавен макÑималÑномÑ
       знаÑÐµÐ½Ð¸Ñ (задаÑÑÑÑ ÑеализаÑией) DELAYTIMER_MAX, Ñо
       timer_getoverrun() должен возвÑаÑаÑÑ DELAYTIMER_MAX.
       Ðднако в Linux ÑÑо не Ñеализовано: вмеÑÑо
       ÑÑого, еÑли знаÑение пеÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑаймеÑа
       пÑевÑÑÐ°ÐµÑ Ð¼Ð°ÐºÑималÑное знаÑение Ñелого, Ñо
       ÑÑÑÑÑик наÑÐ¸Ð½Ð°ÐµÑ ÑвелиÑиваÑÑÑÑ Ñ Ð½Ð°Ñала.

ÐÐ ÐÐÐÐ
       СмоÑÑиÑе 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)



Linux                             2015-08-08               TIMER_GETOVERRUN(2)