NAME Disable -- disable interrupt processing. SYNOPSIS Disable(); void Disable(void); FUNCTION Prevents interrupts from being handled by the system, until a matching Enable() is executed. Disable() implies Forbid(). DO NOT USE THIS CALL WITHOUT GOOD JUSTIFICATION. THIS CALL IS VERY DANGEROUS! RESULTS All interrupt processing is deferred until the task executing makes a call to Enable() or is placed in a wait state. Normal task rescheduling does not occur while interrupts are disabled. In order to restore normal interrupt processing, the programmer must execute exactly one call to Enable() for every call to Disable(). IMPORTANT REMINDER: It is important to remember that there is a danger in using disabled sections. Disabling interrupts for more than ~250 microseconds will prevent vital system functions (especially serial I/0) from operating in a normal fashion. Think twice before using Disable(), then think once more. After all that, think again. With enough thought, the need for a Disable() can often be eliminated. For the user of many device drivers, a write to disable *only* the particular interrupt of interest can replace a Disable(). For example: MOVE.W #INTF_PORTS,_intena Do not use a macro for Disable(), insist on the real thing. This call may be made from interrupts, it will have the effect of locking out all higher-level interrupts (lower-level interrupts are automatically disabled by the CPU). Note: In the event of a task entering a Wait() after disabling interrupts, the system "breaks" the disabled state and runs normally until the task which called Disable() is rescheduled. NOTE This call is guaranteed to preserve all registers. SEE ALSO Forbid, Permit, Enable
[Back to Amiga Developer Docs]