summaryrefslogtreecommitdiffstats
path: root/doc/porting/interrupts.t
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2003-02-11 23:44:41 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2003-02-11 23:44:41 +0000
commiteed014937a5e6a3d2ff50db8efa0db1bcffe6dcc (patch)
treed50d1e22340cb1d26db5a45c941dd04e83771e69 /doc/porting/interrupts.t
parent2003-02-11 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-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.t16
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