InterruptEnable()

Включить аппаратные прерывания

Прототип:

#include <sys/neutrino.h>
void InterruptEnable( void );

Библиотека:

libc

Описание:

Функция InterruptEnable() включает все аппаратные прерывания. Может вызваться из потока или из обработчика прерывания. Перед вызовом этой функции поток должен запросить привилегии ввода-вывода, вызвав:

ThreadCtl( _NTO_TCTL_IO, 0 );

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

Необходимо вызвать эту функцию после InterruptDisable() так быстро, насколько это возможно. В противном случае в SMP системах возможна ситуация, при которой прерывания останутся отключенными на одном CPU, а включенными на другом. Это потенциально может привести к потере управления на первом CPU.


Caution: Используйте InterruptLock() и InterruptUnlock() вместо InterruptDisable() и InterruptEnable(). Функции InterruptLock() и InterruptUnlock() предназначены для многоядерных SMP систем и позволяют потоку с обработкой прерывания выполняться на любом ядре (или процессоре для многопроцессорных систем).

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

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

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

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

InterruptDisable(), InterruptLock(), InterruptMask(), InterruptUnlock(), InterruptUnmask(), ThreadCtl()




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