InterruptDisable()
Disable hardware interrupts
Synopsis:
#include <sys/neutrino.h> void InterruptDisable( void );
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The InterruptDisable() function disables all hardware interrupts. You can call it from a thread or from an interrupt handler. Before calling this function, the thread must:
- have the PROCMGR_AID_IO ability enabled. For more information, see procmgr_ability() .
- request I/O privileges by calling:
ThreadCtl( _NTO_TCTL_IO, 0 );
Any kernel call results in the re-enabling of interrupts, and many
library routines are built on kernel calls. Masked interrupts aren't
affected.
If the thread doesn't do these things, it might SIGSEGV when it calls InterruptDisable().
Reenable the interrupts by calling InterruptEnable() .
Since this function disables all hardware interrupts, take care
to reenable them as quickly as possible. Failure to
do so may result in increased interrupt latency and nonrealtime
performance.
Use InterruptDisable() instead of an inline cli to ensure hardware portability with non-x86 CPUs.
Use InterruptLock()
and
InterruptUnlock()
instead
of InterruptDisable()
and InterruptEnable()
.
The InterruptLock() and
InterruptUnlock() functions perform
the intended function on SMP hardware, and allow your interrupt thread
to run on any
processor in the system.
Classification:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | Yes |
Signal handler | Yes |
Thread | Yes |