InterruptWait(), InterruptWait_r()

Ожидать аппаратного прерывания

Прототип:

#include <sys/neutrino.h>
int InterruptWait( int flags,
const uint64_t *timeout );
int InterruptWait_r( int flags,
const uint64_t *timeout );

Аргументы:

flags
This should currently be 0.
timeout
This should currently be NULL. This may change in future versions.


Note: Use TimerTimeout() to achieve a timeout.

Библиотека:

libc

Описание:

These kernel calls wait for a hardware interrupt. The calling thread should have attached a handler to the interrupt, by calling InterruptAttach() or InterruptAttachEvent(). The call to InterruptWait() or InterruptWait_r() blocks waiting for an interrupt handler to return an event with notification type SIGEV_INTR (i.e. a hardware interrupt).

The InterruptWait() and InterruptWait_r() functions are identical except in the way they indicate errors.

If the notification event occurs before InterruptWait() is called, a pending flag is set. When InterruptWait() is called, the flag is checked; if set, it's cleared and the call immediately returns with success.

On a multicore system, a thread that calls InterruptWait() runs on any CPU, limited only by the scheduler and the runmask.

Состояния блокировки:

STATE_INTR
The thread is waiting for an interrupt handler to return a SIGEV_INTR event.

Возвращаемое значение:

InterruptWait()
Если возникла ошибка функция возвращает -1, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.
InterruptWait_r()
EOK возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.

Коды ошибок:

EINTR
The call was interrupted by a signal.
ENOTSUP
The reserved arguments aren't NULL.
ETIMEDOUT
A kernel timeout unblocked the call. See TimerTimeout().

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

InterruptAttach(), InterruptAttachEvent(), TimerTimeout()




Предыдущий раздел: Описание API системной библиотеки