Disable hardware interrupts
#include <sys/neutrino.h> void InterruptDisable( void );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The InterruptDisable() function disables all hardware interrupts. You can call it from a thread or from an interrupt handler. Before calling this function:
ThreadCtl( _NTO_TCTL_IO, 0 );
If you don't do these things, the thread might SIGSEGV when it calls InterruptDisable().
Reenable the interrupts by calling InterruptEnable().
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.
The InterruptDisable() function doesn't support nesting. If a specific thread calls this function once and then calls it again without having re-enabled hardware interrupts, the second call has no effect, and the first InterruptEnable() call after this point re-enables hardware interrupts.
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | Yes |
Signal handler | Yes |
Thread | Yes |