summaryrefslogtreecommitdiffstats
path: root/c/src/exec
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--c/src/exec/sapi/headers/sptables.h2
-rw-r--r--c/src/exec/sapi/include/rtems/sptables.h2
-rw-r--r--c/src/exec/score/headers/watchdog.h4
-rw-r--r--c/src/exec/score/include/rtems/score/watchdog.h4
-rw-r--r--c/src/exec/score/src/thread.c19
5 files changed, 16 insertions, 15 deletions
diff --git a/c/src/exec/sapi/headers/sptables.h b/c/src/exec/sapi/headers/sptables.h
index 7983c3a67f..db7fc487d3 100644
--- a/c/src/exec/sapi/headers/sptables.h
+++ b/c/src/exec/sapi/headers/sptables.h
@@ -42,7 +42,7 @@ const rtems_multiprocessing_table
*/
const char _RTEMS_version[] =
- "RTEMS RELEASE V3.1.16 (" CPU_NAME "/" RTEMS_MODEL_NAME ")";
+ "RTEMS RELEASE V3.2.0 (" CPU_NAME "/" RTEMS_MODEL_NAME ")";
/*
diff --git a/c/src/exec/sapi/include/rtems/sptables.h b/c/src/exec/sapi/include/rtems/sptables.h
index 7983c3a67f..db7fc487d3 100644
--- a/c/src/exec/sapi/include/rtems/sptables.h
+++ b/c/src/exec/sapi/include/rtems/sptables.h
@@ -42,7 +42,7 @@ const rtems_multiprocessing_table
*/
const char _RTEMS_version[] =
- "RTEMS RELEASE V3.1.16 (" CPU_NAME "/" RTEMS_MODEL_NAME ")";
+ "RTEMS RELEASE V3.2.0 (" CPU_NAME "/" RTEMS_MODEL_NAME ")";
/*
diff --git a/c/src/exec/score/headers/watchdog.h b/c/src/exec/score/headers/watchdog.h
index c7665bfea2..70de7018dd 100644
--- a/c/src/exec/score/headers/watchdog.h
+++ b/c/src/exec/score/headers/watchdog.h
@@ -104,8 +104,8 @@ typedef struct {
* during an insert on a watchdog delta chain.
*/
-volatile unsigned32 _Watchdog_Sync_level;
-volatile unsigned32 _Watchdog_Sync_count;
+EXTERN volatile unsigned32 _Watchdog_Sync_level;
+EXTERN volatile unsigned32 _Watchdog_Sync_count;
/*
* The following defines the watchdog chains which are managed
diff --git a/c/src/exec/score/include/rtems/score/watchdog.h b/c/src/exec/score/include/rtems/score/watchdog.h
index c7665bfea2..70de7018dd 100644
--- a/c/src/exec/score/include/rtems/score/watchdog.h
+++ b/c/src/exec/score/include/rtems/score/watchdog.h
@@ -104,8 +104,8 @@ typedef struct {
* during an insert on a watchdog delta chain.
*/
-volatile unsigned32 _Watchdog_Sync_level;
-volatile unsigned32 _Watchdog_Sync_count;
+EXTERN volatile unsigned32 _Watchdog_Sync_level;
+EXTERN volatile unsigned32 _Watchdog_Sync_count;
/*
* The following defines the watchdog chains which are managed
diff --git a/c/src/exec/score/src/thread.c b/c/src/exec/score/src/thread.c
index 2d9fc33e6b..a181780e52 100644
--- a/c/src/exec/score/src/thread.c
+++ b/c/src/exec/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 );