timer_settime

TIMER_SETTIME(2)Ð ÑководÑÑво пÑогÑаммиÑÑа LinuxTIMER_SETTIME(2)



ÐÐЯ
       timer_settime, timer_gettime - запÑÑкаеÑ/оÑÑанавливаеÑ
       и возвÑаÑÐ°ÐµÑ ÑоÑÑоÑние ÑаймеÑа POSIX
       некоÑоÑого пÑоÑеÑÑа

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

       int timer_settime(timer_t timerid, int flags,
                         const struct itimerspec *new_value,
                         struct itimerspec *old_value);
       int timer_gettime(timer_t timerid, struct itimerspec *curr_value);

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

   ТÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÐºÑоÑа ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑвойÑÑв Ð´Ð»Ñ glibc
   (Ñм. feature_test_macros(7)):

       timer_settime(), timer_gettime(): _POSIX_C_SOURCE >= 199309L

ÐÐÐСÐÐÐÐ
       ÐÑзов timer_settime() запÑÑÐºÐ°ÐµÑ Ð¸Ð»Ð¸ оÑÑанавливаеÑ
       ÑаймеÑ, ÑказаннÑй в timerid. ÐÑгÑÐ¼ÐµÐ½Ñ new_value â ÑÑо
       ÑказаÑÐµÐ»Ñ Ð½Ð° ÑÑÑÑкÑÑÑÑ itimerspec, коÑоÑаÑ
       опÑеделÑÐµÑ Ð½Ð¾Ð²Ð¾Ðµ наÑалÑное знаÑение и
       новÑй инÑеÑвал ÑаймеÑа. СÑÑÑкÑÑÑа itimerspec
       опÑеделена ÑледÑÑÑим обÑазом:

           struct timespec {
               time_t tv_sec;                /* ÑекÑÐ½Ð´Ñ */
               long   tv_nsec;               /* наноÑекÑÐ½Ð´Ñ */
           };

           struct itimerspec {
               struct timespec it_interval;  /* инÑеÑвал ÑаймеÑа */
               struct timespec it_value;     /* пеÑвое ÑÑабаÑÑвание */
           };

       ÐÐ°Ð¶Ð´Ð°Ñ Ð¿Ð¾Ð´ÑÑÑÑкÑÑÑа ÑÑÑÑкÑÑÑÑ itimerspec пÑедÑÑавлÑеÑ
       Ñобой ÑÑÑÑкÑÑÑÑ timespec, коÑоÑÐ°Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑеÑ
       задаваÑÑ Ð·Ð½Ð°Ñение вÑемени в ÑекÑÐ½Ð´Ð°Ñ Ð¸
       наноÑекÑндаÑ. ÐÑи знаÑÐµÐ½Ð¸Ñ Ð²Ñемени
       оÑÑÑиÑÑваÑÑÑÑ Ð¿Ð¾ ÑаÑам, коÑоÑÑе бÑли ÑÐºÐ°Ð·Ð°Ð½Ñ Ð¿Ñи
       Ñоздании ÑаймеÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ timer_create(2).

       ÐÑли new_value->it_value Ñавно ненÑÐ»ÐµÐ²Ð¾Ð¼Ñ Ð·Ð½Ð°ÑениÑ
       (Ñ. е., лÑбое из подполей не Ñавно нÑлÑ), Ñо
       timer_settime() запÑÑÐºÐ°ÐµÑ ÑаймеÑ, ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ñ ÐµÐ¼Ñ
       пеÑвое вÑÐµÐ¼Ñ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ (еÑли ÑÐ°Ð¹Ð¼ÐµÑ Ñже
       запÑÑен, Ñо пÑедÑдÑÑие паÑамеÑÑÑ
       пеÑезапиÑÑваÑÑÑÑ). ÐÑли new_value->it_value Ñавно нÑлÑ
       (Ñ. е., оба Ð¿Ð¾Ð´Ð¿Ð¾Ð»Ñ ÑÐ°Ð²Ð½Ñ Ð½ÑлÑ), Ñо ÑаймеÑ
       вÑклÑÑаеÑÑÑ.

       Рполе new_value->it_interval ÑказÑваеÑÑÑ Ð¿ÐµÑиод
       ÑаймеÑа в ÑекÑÐ½Ð´Ð°Ñ Ð¸ наноÑекÑндаÑ. ÐÑли ÑÑо
       поле Ñавно нÑлÑ, Ñо каждÑй Ñаз, когда ÑаймеÑ
       ÑÑабаÑÑваеÑ, он пеÑезапÑÑкаеÑÑÑ Ñо знаÑением,
       ÑказаннÑм в new_value->it_interval. ÐÑли
       new_value->it_interval Ñавно нÑлÑ, Ñо ÑаймеÑ
       ÑÑабаÑÑÐ²Ð°ÐµÑ ÑолÑко один Ñаз, ÑоглаÑно
       Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð² it_value вÑемени.

       Ðо ÑмолÑаниÑ, наÑалÑное вÑÐµÐ¼Ñ ÑÑабаÑÑваниÑ,
       Ñказанное в new_value->it_value, ÑÑиÑаеÑÑÑ
       оÑноÑиÑелÑно ÑекÑÑего вÑемени на ÑаÑаÑ
       ÑаймеÑа на Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñзова. ÐÑо можно
       измениÑÑ, Ñказав TIMER_ABSTIME в flags; в ÑÑом ÑлÑÑае
       new_value->it_value ÑаÑÑмаÑÑиваеÑÑÑ ÐºÐ°Ðº абÑолÑÑное
       знаÑение по ÑаÑам ÑаймеÑа; Ñо еÑÑÑ ÑаймеÑ
       ÑÑабоÑаеÑ, когда знаÑение ÑаÑов доÑÑигнеÑ
       знаÑениÑ, Ñказанного в new_value->it_value. ÐÑли
       Ñказанное абÑолÑÑное вÑÐµÐ¼Ñ Ñже пÑоÑло, Ñо
       ÑÐ°Ð¹Ð¼ÐµÑ ÑÑабаÑÑÐ²Ð°ÐµÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ и ÑÑÑÑÑик
       пеÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÑеÑÑÑ ÑооÑвеÑÑÑвÑÑÑим
       обÑазом (ÑмоÑÑиÑе timer_getoverrun(2)).

       ÐÑли знаÑение ÑаÑов CLOCK_REALTIME коÑÑекÑиÑÑеÑÑÑ
       (adjusted) и Ñказано абÑолÑÑное знаÑение Ñ
       вклÑÑÑнного ÑаймеÑа Ñ ÑÑими ÑаÑами, Ñо
       ÑÑабаÑÑвание ÑаймеÑа бÑÐ´ÐµÑ ÑкоÑÑекÑиÑовано
       ÑооÑвеÑÑÑвÑÑÑим обÑазом. ÐоÑÑекÑиÑовка ÑаÑов
       CLOCK_REALTIME не влиÑÐµÑ Ð½Ð° оÑноÑиÑелÑнÑе ÑаймеÑÑ,
       иÑполÑзÑÑÑие ÑÑи ÑаÑÑ.

       ÐÑли знаÑение old_value не Ñавно NULL, Ñо оно
       ÑказÑÐ²Ð°ÐµÑ Ð½Ð° бÑÑеÑ, коÑоÑÑй иÑполÑзÑеÑÑÑ Ð´Ð»Ñ
       возвÑаÑа пÑедÑдÑÑего инÑеÑвала ÑаймеÑа (в
       old_value->it_interval) и колиÑеÑÑва вÑемени,
       коÑоÑое оÑÑалоÑÑ ÑаймеÑÑ Ð´Ð¾ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ (в
       old_value->it_value).

       ÐÑзов timer_gettime() возвÑаÑÐ°ÐµÑ Ð²ÑÐµÐ¼Ñ Ð´Ð¾
       ÑледÑÑÑего ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÑаймеÑа timerid и
       инÑеÑвал в бÑÑÐµÑ curr_value. ÐÑÑавÑееÑÑ Ð²ÑÐµÐ¼Ñ Ð´Ð¾
       ÑледÑÑÑего ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ Ð²Ð¾Ð·Ð²ÑаÑаеÑÑÑ Ð²
       curr_value->it_value; ÑÑо вÑегда оÑноÑиÑелÑное
       знаÑение, незавиÑимо Ð¾Ñ Ñого, ÑказÑвалÑÑ Ð»Ð¸
       Ñлаг TIMER_ABSTIME пÑи вклÑÑении ÑаймеÑа. ÐÑли
       знаÑение curr_value->it_value Ñавно нÑлÑ, Ñо ÑаймеÑ
       в даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²ÑклÑÑен. ÐнÑеÑвал ÑаймеÑа
       возвÑаÑаеÑÑÑ Ð² curr_value->it_interval. ÐÑли знаÑение
       curr_value->it_interval Ñавно нÑлÑ, Ñо ÑÑо
       «одноÑазовÑй» ÑаймеÑ.

ÐÐÐÐÐ ÐЩÐÐÐÐÐ ÐÐÐЧÐÐÐÐ
       ÐÑи ÑÑпеÑном вÑполнении timer_settime() и
       timer_gettime() возвÑаÑаеÑÑÑ 0. ÐÑи оÑибке
       возвÑаÑаеÑÑÑ -1, а в errno ÑодеÑжиÑÑÑ ÐºÐ¾Ð´ оÑибки.

ÐШÐÐÐÐ
       ÐÑи ÑÑнкÑии могÑÑ Ð·Ð°Ð²ÐµÑÑиÑÑÑÑ Ñо ÑледÑÑÑими
       оÑибками:

       EFAULT ÐекоÑÑекÑнÑй ÑказаÑÐµÐ»Ñ new_value, old_value или
              curr_value.

       EINVAL ÐевеÑное знаÑение timerid.

       timer_settime() Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²ÐµÑÑиÑÑÑÑ Ñо ÑледÑÑÑими
       оÑибками:

       EINVAL ÐнаÑение new_value.it_value оÑÑиÑаÑелÑно; или
              new_value.it_value.tv_nsec оÑÑиÑаÑелÑно или болÑÑе
              999999999.

ÐÐРСÐÐ
       ÐаннÑе ÑиÑÑемнÑе вÑÐ·Ð¾Ð²Ñ Ð¿Ð¾ÑвилиÑÑ Ð² Linux 2.6.

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

ÐÐ ÐÐÐÐ
       СмоÑÑиÑе timer_create(2).

СÐÐТРÐТРТÐÐÐÐ
       timer_create(2), timer_getoverrun(2), time(7)



Linux                             2015-08-08                  TIMER_SETTIME(2)