InterruptDisable()

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

Прототип:

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

Библиотека:

libc

Описание:

Функция InterruptDisable() отключает все аппаратные прерывания. Может вызваться из потока или из обработчика прерывания.


Note: Любой системный вызов приводит к включению прерываний, многие библиотечные функции используют системные вызовы. Замаскированные прерывания это не затрагивает.

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

ThreadCtl( _NTO_TCTL_IO, 0 );

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

Для повторного включения прерываний вызывается InterruptEnable().


Caution: Эта функция отключает все аппаратные прерывания и необходимо снова включить их так быстро, насколько это возможно. Невыполнение этого требования может привести к увеличению задержек при получении прерываний и нарушению работы в режиме реального времени.

Используйте InterruptDisable() вместо ассемблерной инструкции cli, чтобы обеспечить совместимость с не-x86 процессорами.


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

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

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

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

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

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




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