Установить время срабатывания таймера
#include <sys/neutrino.h>int TimerSettime( timer_t id,int flags,const struct _itimer *itime,struct _itimer *oitime );int TimerSettime_r( timer_t id,int flags,const struct _itimer *itime,struct _itimer *oitime );
TIMER_ABSTIME
. Если этот флаг установлен, то в параметре nsec задается "абсолютное" время срабатывания таймера в наносекундах, начиная от т.н. эпохи Unix (00:00:00 1-го января 1970 года по UTC). Если указанное время уже истекло, то событие срабатывания доставляется немедленно. Если этот флаг не указан, то время срабатывания является "относительным", т.е. смещенным в наносекундах относительно текущего значения системного времени.NULL
, или указатель на структуру struct _itimer, в которой функция сохранит предыдущий период интервального таймера, или 0, если таймер был выключен во время вызова). Предыдущий период таймера также будет сохранен в элементе interval_nsec.libc
Системные вызовы TimerSettime() и TimerSettime_r() устанавливают время срабатывания таймера с идентификатором id.
Данные функции идентичны за исключением способа возврата ошибок.
Время срабатывания
Время срабатывания задается в параметре itime. Если значение элемента nsec в структуре itime равно 0, то таймер выключается.
В случае, если значение элемента interval_nsec в структуре itime не равно 0, то это значение определяет период повторных срабатываний таймера после первого срабатывания через время nsec. Таким образом таймер будет автоматически "перезаряжаться" и станет срабатывать с периодом, указанным interval_nsec.
В случае, если таймер был уже запущен во время вызова TimerSettime(), то предыдущие настройки таймера будут сброшены и применены новые.
В случае, если событие уведомления, определенное при вызове функции TimerCreate(), имело значение SI_TIMER
в поле sigev_code, то только одно событие уведомления будет поставлено в очередь. В этом случае, если событие ожидалось для предыдущего срабатывания, то, когда таймер сработает снова, произойдет переполнение таймера. С помощью системного вызова TimerInfo() можно получить значение счетчика таких переполнений.
В связи с особенностями измерения таймер может сработать ранее заданного времени. |
Данные вызовы являются неблокируемыми.
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.EOK
возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
ЗОСРВ «Нейтрино»
struct _itimer, timer_t, timer_gettime(), timer_settime(), TimerCreate(), TimerInfo()
Предыдущий раздел: Описание API системной библиотеки