summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/thread.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1995-06-04 22:43:19 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1995-06-04 22:43:19 +0000
commit7979e35617b49433694cf0a636d6ef2b58811ed4 (patch)
treed6cb555259226136eb6eaeb5070a7379692ac164 /cpukit/score/src/thread.c
parentCorrected minor number for "Null" device driver (diff)
downloadrtems-7979e35617b49433694cf0a636d6ef2b58811ed4.tar.bz2
changed release number to 3.2.0
Diffstat (limited to 'cpukit/score/src/thread.c')
-rw-r--r--cpukit/score/src/thread.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/cpukit/score/src/thread.c b/cpukit/score/src/thread.c
index 2d9fc33e6b..a181780e52 100644
--- a/cpukit/score/src/thread.c
+++ b/cpukit/score/src/thread.c
@@ -588,19 +588,20 @@ void _Thread_Handler( void )
executing = _Thread_Executing;
- _Thread_Dispatch_disable_level = 0;
-
/*
- * Do the 'begin' here instead of after the context switch.
- * This ensures 'switch' extensions can not be called before
- * 'begin' extensions.
+ * Take care that 'begin' extensions get to complete before
+ * 'switch' extensions can run. This means must keep dispatch
+ * disabled until all 'begin' extensions complete.
*/
-
+
_User_extensions_Task_begin( executing );
+
+ /*
+ * At this point, the dispatch disable level BETTER be 1.
+ */
- if ( _Thread_Is_context_switch_necessary() )
- _Thread_Dispatch();
-
+ _Thread_Enable_dispatch();
+
(*executing->Start.entry_point)( executing->Start.initial_argument );
_User_extensions_Task_exitted( executing );