Отправить сигнал оповещения (alarm)
#include <sys/neutrino.h>int TimerAlarm( clockid_t id,const struct _itimer *itime,struct _itimer *otime );int TimerAlarm_r( clockid_t id,const struct _itimer *itime,struct _itimer *otime );
CLOCK_SOFTTIME
для сна, не "разбудит" процессор, когда приложение должно проснуться. Это позволит процессору перейти в режим энергосбережения. Когда процессор не находится в режиме энергосбережения таймеры типа CLOCK_SOFTTIME
аналогичны типу CLOCK_REALTIME
. NULL
, или указатель на структуру struct _itimer, определяющую время ожидания.NULL
, или указатель на структуру struct _itimer, в которой функция сохранит предыдущее время срабатывания таймера.libc
Данные системные вызовы устанавливают сигнал оповещения (SIGALRM
), который будет доставлен ожидающему по таймеру потоку во время, указанное в itime. Если параметр otime не равен NULL
, то в него будет записано предыдущее время срабатывания таймера.
Функции TimerAlarm() и TimerAlarm_r() идентичны за исключением того, как они указывают на ошибки.
![]() | Рекомендуется вместо непосредственного использования системных вызовов, использовать функции alarm() или setitimer().
Из-за особенностей измерения времени таймер фактически может сработать после истечения указанного в функции времени. |
Запросы на оповещение не накапливаются и только один сигнал SIGALRM
будет направлен по срабатыванию таймера. Если вызов TimerAlarm() произошел во время ожидания оповещения, таймер сбрасывается до нового значения, указанного в itime.
Если параметр itime равен NULL
, то любой запрос на оповещение отменится, а новый сигнал не установится.
Данные вызовы являются неблокируемыми.
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.EOK
возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
ЗОСРВ «Нейтрино»
Функции alarm(), TimerAlarm(), и ualarm() не накапливают запросы на оповещение. С помощью этих функций можно запланировать генерацию только одного сигнала SIGALRM
. Если сигнал SIGALRM
не был сгенерирован, то следующие вызовы l{alarm()}, TimerAlarm(), и ualarm() его перепланируют.
struct _itimer, alarm(), setitimer(), TimerCreate(), ualarm()
Предыдущий раздел: Описание API системной библиотеки