[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]


    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()