Отправить сигнал оповещения (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 системной библиотеки