diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2003-02-11 23:44:41 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2003-02-11 23:44:41 +0000 |
commit | eed014937a5e6a3d2ff50db8efa0db1bcffe6dcc (patch) | |
tree | d50d1e22340cb1d26db5a45c941dd04e83771e69 /doc/porting/interrupts.t | |
parent | 2003-02-11 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-eed014937a5e6a3d2ff50db8efa0db1bcffe6dcc.tar.bz2 |
2003-02-11 Joel Sherrill <joel@OARcorp.com>
* interrupts.t: Rework logic that decides when to call
_Thread_Dispatch. Analysis by Sergei Organov <osv@javad.ru>
determined that _ISR_Signals_to_thread_executing was not being
honored and/or cleared properly.
Diffstat (limited to 'doc/porting/interrupts.t')
-rw-r--r-- | doc/porting/interrupts.t | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/doc/porting/interrupts.t b/doc/porting/interrupts.t index aa660f5a0e..d3930d043d 100644 --- a/doc/porting/interrupts.t +++ b/doc/porting/interrupts.t @@ -365,17 +365,15 @@ if ( _ISR_Nest_level ) restore stack #endif -if ( !_Context_Switch_necessary ) +if ( _Thread_Dispatch_disable_level ) + _ISR_Signals_to_thread_executing = FALSE; goto the label "exit interrupt (simple case)" -if ( !_ISR_Signals_to_thread_executing ) - goto the label "exit interrupt (simple case)" - -_ISR_Signals_to_thread_executing = FALSE; - -call _Thread_Dispatch() or prepare to return to _ISR_Dispatch -prepare to get out of interrupt -return from interrupt (maybe to _ISR_Dispatch) +if ( _Context_Switch_necessary || _ISR_Signals_to_thread_executing ) + _ISR_Signals_to_thread_executing = FALSE; + call _Thread_Dispatch() or prepare to return to _ISR_Dispatch + prepare to get out of interrupt + return from interrupt (maybe to _ISR_Dispatch) LABEL "exit interrupt (simple case): prepare to get out of interrupt |