InterruptDetach(), InterruptDetach_r()

Отделить обработчик прерываний по его идентификатору

Прототип:

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

Аргументы:

id
The value returned by InterruptAttach() InterruptAttachEvent(), or InterruptHookIdle().

Библиотека:

libc

Описание:

These kernel calls detach the interrupt handler specified by the id argument. If, after detaching, no thread is attached to the interrupt, then the interrupt is masked off. The thread that detaches the interrupt handler must be in the same process as the thread that attached it.

The InterruptDetach() and InterruptDetach_r() functions are identical except in the way they indicate errors.

Before calling either of these functions, the thread must request I/O privileges by calling:

ThreadCtl( _NTO_TCTL_IO, 0 );

If the thread doesn't do this, it might SIGSEGV when it calls InterruptDetach() or InterruptDetach_r().

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

These calls don't block.

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

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

Коды ошибок:

EINVAL
The value of id doesn't exist for this process.
EPERM
The process doesn't have superuser privileges, or isn't the process that attached the interrupt identified by id.

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

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

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

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

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




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