Linux repositories inspector

timer_settime(2) - Russkiy

Linux
2017-09-15
Aliases: timer_gettime(2), timer_gettime(2), timer_gettime(2), timer_gettime(2)

man-pages-ru

Russian man pages from the Linux Documentation Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

ИМЯ

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).

СМОТРИТЕ ТАКЖЕ

⇧ Top