InterruptDetach(), InterruptDetach_r()

Отключить обработчик прерывания

Прототип:

#include <sys/neutrino.h>
int InterruptDetach( int id );
int InterruptDetach_r( int id );

Аргументы:

id
Идентификатор, возвращаемый InterruptAttach(), InterruptAttachEvent() или InterruptHookIdle().

Библиотека:

libc

Описание:

Системные вызовы InterruptDetach() и InterruptDetach_r() отключают обработчик прерывания с идентификатором id. Если после отключения обработчика прерывание более никем не обрабатывается, то оно маскируется. Поток, отключающий обработчик прерывания, должен находиться в том же процессе, что и поток, который его подключил.

Функции идентичны за исключением способа возврата ошибок.

Перед вызовом любой из этих функций поток должен запросить привилегии ввода-вывода, вызвав:

ThreadCtl( _NTO_TCTL_IO, 0 );

Если поток этого не сделает, он может получить SIGSEGV при вызове InterruptDetach() или InterruptDetach_r().

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

Данные вызовы неблокирующие.

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

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

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

Коды ошибок:

EINVAL
Значение id не существует для этого процесса.
EPERM
Процесс не имеет привилегий суперпользователя или не является процессом, подключившим обработчик с идентификатором id.

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

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

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

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

InterruptAttach(), InterruptAttachEvent(), InterruptHookIdle(), InterruptUnlock()




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