Ожидать аппаратного прерывания
#include <sys/neutrino.h>int InterruptWait( int flags,const uint64_t *timeout );int InterruptWait_r( int flags,const uint64_t *timeout );
0
.NULL
.
libc
Системные вызовы InterruptWait() и InterruptWait_r() ожидают аппаратного прерывания. Вызывающий поток должен иметь подключенный с помощью InterruptAttach() или InterruptAttachEvent() обработчик прерывания. Вызов InterruptWait() или InterruptWait_r() является блокирующим, начинается ожидание, пока обработчик прерывания вернет событие с типом уведомления SIGEV_INTR
(т.е. аппаратное прерывание).
Функции идентичны за исключением способа возврата ошибок.
Если событие приходит до вызова InterruptWait(), устанавливается флаг ожидания. При вызове InterruptWait() происходит проверка флага и, если он установлен, флаг очищается и вызов немедленно завершается.
В многоядерной системе поток, вызывающий InterruptWait(), выполняется на любом ядре, ограничения накладываются только планировщиком и маской выполнения (см. ThreadCtl() и команду _NTO_TCTL_RUNMASK
).
SIGEV_INTR
. -1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.При
успешном завершении возвращается EOK
. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из перечисленных ниже кодов.
NULL
. ЗОСРВ «Нейтрино»
InterruptAttach(), InterruptAttachEvent(), TimerTimeout()
Предыдущий раздел: Описание API системной библиотеки