[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Получение/установка значений таймера интервалов

Для прикладных программ, работающих в режиме реального времени, часто
бывает полезно установить таймер, который бы посылал сигнал по
окончанию заданного времени. getitimer(3) сохраняет текущее значение
таймера, заданного переменной which, в структуре с указателем value.
Системный вызов setitimer(3) устанавливает значение таймера, заданного
переменной which, равным значению из структуры с указателем value, и
если ovalue не равно нулю, сохраняет предыдущее значение таймера в
структуре с указателем ovalue. Структура itimerval определена в
<sys/time.h> следующим образом:
struct itimerval {
    struct timeval it_interval; /* timer interval */
    struct timeval it_value;     /* current value */ }

Если поле it_value не равно нулю, то оно указывает время следующего
срабатывания таймера. getitimer(3) записывает в это поле время,
оставшееся до следующего срабатывания таймера. Если it_interval не
равно нулю, то оно задает значение, которое должно быть использовано
при перезагрузке поля it_value после срабатывания таймера. Установка
it_value равным нулю делает таймер неработоспособным, независимо от
значения it_interval. Установка it_interval равным нулю сделает таймер
неработоспособным после его первого срабатывания (при этом it_value не
должно быть равно нулю).
У структуры timeval два поля:
long tv_sec; /* seconds since Jan. 1, 1970 */
long tv_usec; /* microseconds */.

Символьные константы для which определены в <sys/time.h> следующим
образом:
ITIMER_REAL    Таймер работает  в реальном  времени (настенные  часы).
               Время уменьшается  с каждым  тиканием часов, независимо
               от того,  исполняется ли  связанный с таймером процесс.
               Когда время кончается, посылается SIGALARM.

ITIMER_VIRTUAL Таймер   работает    в   виртуальном   времени.   Время
               уменьшается только  тогда, когда  процесс исполняется в
               пользовательском   режиме.   Когда   время   кончается,
               посылается SIGALARM.

ITIMER_PROF    Время   уменьшается   только   тогда,   когда   процесс
               исполняется в режиме ядра или пользователя. Когда время
               кончается, посылается  SIGPROF.  Так  как  этот  сигнал
               может прерывать  системные вызовы  процесса, программа,
               использующая  таймер,   должна  уметь   восстанавливать
               прерванные системные вызовы.
           ПОЛУЧЕНИЕ/УСТАНОВКА ЗНАЧЕНИЯ ТАЙМЕРА ИНТЕРВАЛОВ
getitimer(3)

ИМЯ

      getitimer, setitimer - получение/установка значений таймера
      интервалов

ИСПОЛЬЗОВАНИЕ

      #include <sys/time.h>

      int getitimer(int which,
            struct itimerval *value);
      int setitimer(int which,
            struct itimerval *value,
               struct itimerval *ovalue);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

      успех - 0

      неуспех - -1 и errno установлена