Создать таймер
#include <sys/neutrino.h>int TimerCreate( clockid_t id,const struct sigevent *event );int TimerCreate_r( clockid_t id,const struct sigevent *event );
CLOCK_SOFTTIME
для сна, не "разбудит" процессор, когда приложение должно проснуться. Это позволит процессору перейти в режим энергосбережения. Когда процессор не находится в режиме энергосбережения таймеры типа CLOCK_SOFTTIME
аналогичны типу CLOCK_REALTIME
. NULL
, или указатель на структуру struct sigevent, содержащую событие, которое будет доставлено при срабатывании таймера.libc
Системные вызовы TimerCreate() и TimerCreate_r() создают для процесса таймер, использующий тип часов id.
Данные функции идентичны, но по разному указывают на ошибки.
Функция возвращает идентификатор таймера (timer ID), который используется в других таймерных функциях.
Таймер будет создан выключенным. Для его включения используется функция TimerSettime().
Структура struct sigevent содержит событие (уведомление), которое будет доставлено при срабатывании таймера. Рекомендуется использовать следующие типы событий:
SIGEV_PULSE
для случая, когда поток в цикле принимает сообщения с помощью функции MsgReceivev(). В этом случае будут получены пульсы от таймера.
SIGEV_SIGNAL_THREAD
.
SIGEV_UNBLOCK
или SIGEV_INTR
могут использоваться, но их использование не рекомендуется. Уведомление типа SIGEV_UNBLOCK
обычно используется в системном вызове TimerTimeout(), а уведомление типа SIGEV_INTR
предназначено для системного вызова InterruptWait(). Если параметр event равен NULL
, то по истечении времени таймера процессу будет доставлен сигнал SIGALRM
. Для установки обработчика этого сигнала необходимо вызвать функцию sigaction().
Данные вызовы являются неблокируемыми.
-1
, код ошибки записывается в errno.
ЗОСРВ «Нейтрино»
struct sigevent, timer_create(), TimerAlarm(), TimerDestroy(), TimerInfo(), TimerSettime(), TimerTimeout()
Предыдущий раздел: Описание API системной библиотеки