timer_settime()

Установить время срабатывания таймера

Прототип:

#include <time.h>
int timer_settime( timer_t timerid,
int flags,
const struct itimerspec *value,
struct itimerspec *ovalue );

Аргументы:

timerid
Объект типа timer_t, полученный при вызове функции timer_create(), и содержащий идентификатор таймера (timer ID).
flags
Тип таймера в случае, если таймер не требуется выключить. Допустимые битовые значения:
TIMER_ABSTIME
значение it_value представляет собой абсолютное время до срабатывания (истечения времени таймера) в секундах и наносекундах от 1970 года. Если указанное время уже истекло, функция завершается и происходит уведомление о срабатывании.
иное значение
если бит TIMER_ABSTIME не установлен, значение it_value представляет собой период времени до срабатывания, смещенный относительно текущего системного времени на указанное количество секунд и наносекунд.
value
Указатель на структуру struct itimerspec, которая определяет время до срабатывания таймера.
ovalue
NULL, или указатель на структуру struct itimerspec, в которой будет записано предыдущее время срабатывания таймера.

Библиотека:

libc

Описание:

Функция timer_settime() устанавливает время срабатывания указанного в timerid таймера, из элемента it_value параметра value. Если значение элемента it_value в структуре value равен нулю, то таймер будет выключен.

Функция timer_settime() округляет значения времени, которые находятся между двумя последовательными неотрицательными целыми числами, кратными разрешению таймера, до большего значения, кратному разрешению.

Если значение элемента it_interval параметра value не равно нулю, то это значение определяет период срабатывания таймера. После каждого срабатывания таймер автоматически перезаряжается и срабатывает периодически с периодом it_interval.

Если параметр ovalue не равен NULL, то при возврате из функции этот параметр содержит предыдущее значение времени, оставшееся до срабатывания, либо ноль, если таймер был выключен. Предыдущий период срабатывания таймера также сохраняется в элементе it_interval.

Идентификатор timerid локален внутри вызывающего процесса и должен создаваться при вызове функции timer_create().


Note: Из-за особенностей измерения времени таймер фактически может сработать после истечения указанного в функции времени.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EFAULT
Возникла ошибка при доступе к буферам
EINVAL
Таймер с идентификатором timerid не связан с вызывающим процессом, либо число наносекунд в поле tv_nsec структуры struct timespec или структуры struct itimerspec параметра value меньше нуля или превышает (или равно) 1000 миллионов.

Примеры:

См. timer_create().

Классификация:

POSIX 1003.1 Timers

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

struct itimerspec, clock_getres(), clock_gettime(), clock_settime(), errno, nanosleep(), sleep(), timer_t, timer_create(), timer_delete(), timer_getexpstatus(), timer_getoverrun(), timer_gettime(), struct timespec




Предыдущий раздел: Описание API системной библиотеки