summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-06-05 12:08:23 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-06-07 17:02:26 +0200
commit4fc370e3c64c510d43d1e8808d664513baca2ad7 (patch)
treecb2734e3c4cdb8ccda3bfaf1740ed7d2ab78f3a2
parentscore: Simplify _CORE_mutex_Seize_interrupt_try* (diff)
downloadrtems-4fc370e3c64c510d43d1e8808d664513baca2ad7.tar.bz2
score: Move thread dispatch content to new file
Move thread dispatch declarations and inline functions to new header <rtems/score/threaddispatch.h> to make it independent of the Thread_Control structure. This avoids a cyclic dependency in case thread dispatch functions are used for the object implementation.
-rw-r--r--cpukit/score/Makefile.am1
-rw-r--r--cpukit/score/include/rtems/score/thread.h105
-rw-r--r--cpukit/score/include/rtems/score/threaddispatch.h264
-rw-r--r--cpukit/score/inline/rtems/score/coremutex.inl2
-rw-r--r--cpukit/score/inline/rtems/score/coresem.inl1
-rw-r--r--cpukit/score/inline/rtems/score/object.inl2
-rw-r--r--cpukit/score/inline/rtems/score/thread.inl140
-rw-r--r--cpukit/score/preinstall.am4
-rw-r--r--cpukit/score/src/corerwlocktimeout.c2
-rw-r--r--cpukit/score/src/corespinlockwait.c1
-rw-r--r--cpukit/score/src/coretodset.c1
-rw-r--r--cpukit/score/src/isrsmp.c1
-rw-r--r--cpukit/score/src/schedulercbsattachthread.c1
-rw-r--r--cpukit/score/src/schedulercbsdetachthread.c1
-rw-r--r--cpukit/score/src/schedulercbsgetexecutiontime.c1
-rw-r--r--cpukit/score/src/schedulercbsgetremainingbudget.c1
-rw-r--r--cpukit/score/src/smp.c1
-rw-r--r--cpukit/score/src/threadclose.c1
-rw-r--r--cpukit/score/src/threaddelayended.c1
-rw-r--r--cpukit/score/src/threaddisabledispatch.c1
-rw-r--r--cpukit/score/src/threaddispatch.c1
-rw-r--r--cpukit/score/src/threaddispatchdisablelevel.c2
-rw-r--r--cpukit/score/src/threadget.c1
-rw-r--r--cpukit/score/src/threadhandler.c1
-rw-r--r--cpukit/score/src/threadqtimeout.c1
25 files changed, 291 insertions, 247 deletions
diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am
index d4c79ac4f2..e6c8704b58 100644
--- a/cpukit/score/Makefile.am
+++ b/cpukit/score/Makefile.am
@@ -44,6 +44,7 @@ include_rtems_score_HEADERS += include/rtems/score/stack.h
include_rtems_score_HEADERS += include/rtems/score/states.h
include_rtems_score_HEADERS += include/rtems/score/sysstate.h
include_rtems_score_HEADERS += include/rtems/score/thread.h
+include_rtems_score_HEADERS += include/rtems/score/threaddispatch.h
include_rtems_score_HEADERS += include/rtems/score/threadq.h
include_rtems_score_HEADERS += include/rtems/score/threadsync.h
include_rtems_score_HEADERS += include/rtems/score/timespec.h
diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h
index 9461c85be1..3cddb5a3e9 100644
--- a/cpukit/score/include/rtems/score/thread.h
+++ b/cpukit/score/include/rtems/score/thread.h
@@ -50,18 +50,6 @@
#define RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API
#endif
-#if defined(RTEMS_SMP) || \
- defined(RTEMS_HEAVY_STACK_DEBUG) || \
- defined(RTEMS_HEAVY_MALLOC_DEBUG)
- #define __THREAD_DO_NOT_INLINE_DISABLE_DISPATCH__
-#endif
-
-#if defined(RTEMS_SMP) || \
- (CPU_INLINE_ENABLE_DISPATCH == FALSE) || \
- (__RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH__ == 1)
- #define __THREAD_DO_NOT_INLINE_ENABLE_DISPATCH__
-#endif
-
/*
* Deferred floating point context switches are not currently
* supported when in SMP configuration.
@@ -463,28 +451,6 @@ SCORE_EXTERN Objects_Information _Thread_Internal_information;
SCORE_EXTERN Context_Control _Thread_BSP_context;
/**
- * The following declares the dispatch critical section nesting
- * counter which is used to prevent context switches at inopportune
- * moments.
- */
-SCORE_EXTERN volatile uint32_t _Thread_Dispatch_disable_level;
-
-#if defined(RTEMS_SMP)
- typedef struct {
- SMP_lock_Control lock;
- int owner_cpu;
- int nest_level;
- } Thread_Dispatch_disable_level_lock_control;
-
- /**
- * The following declares the smp spinlock to be used to control
- * the dispatch critical section accesses across cpus.
- */
- SCORE_EXTERN Thread_Dispatch_disable_level_lock_control
- _Thread_Dispatch_disable_level_lock;
-#endif
-
-/**
* The following holds how many user extensions are in the system. This
* is used to determine how many user extension data areas to allocate
* per thread.
@@ -542,26 +508,6 @@ void _Thread_Create_idle(void);
void _Thread_Start_multitasking( void );
/**
- * @brief Dispatch thread.
- *
- * This routine is responsible for transferring control of the
- * processor from the executing thread to the heir thread. Once the
- * heir is running an attempt is made to dispatch any ASRs.
- * As part of this process, it is responsible for the following actions:
- * + saving the context of the executing thread
- * + restoring the context of the heir thread
- * + dispatching any signals for the resulting executing thread
-
- * ALTERNATE ENTRY POINTS:
- * void _Thread_Enable_dispatch();
- *
- * - INTERRUPT LATENCY:
- * + dispatch thread
- * + no dispatch thread
- */
-void _Thread_Dispatch( void );
-
-/**
* @brief Allocate the requested stack space for the thread.
*
* Allocate the requested stack space for the thread.
@@ -903,57 +849,6 @@ void _Thread_blocking_operation_Cancel(
Thread_Control *the_thread,
ISR_Level level
);
-#if defined(RTEMS_SMP)
-
- /**
- * @brief Initializes the thread dispatching subsystem.
- *
- * This routine initializes the thread dispatching subsystem.
- */
- void _Thread_Dispatch_initialization(void);
-
- /**
- * @brief Checks if thread dispatch says that we are in a critical section.
- *
- * This routine returns true if thread dispatch indicates
- * that we are in a critical section.
- */
- bool _Thread_Dispatch_in_critical_section(void);
-
- /**
- * @brief Returns value of the the thread dispatch level.
- *
- * This routine returns value of the the thread dispatch level.
- */
- uint32_t _Thread_Dispatch_get_disable_level(void);
-
- /**
- * @brief Sets thread dispatch level to the value passed in.
- *
- * This routine sets thread dispatch level to the
- * value passed in.
- */
- uint32_t _Thread_Dispatch_set_disable_level(uint32_t value);
-
- /**
- * @brief Increments the thread dispatch level.
- *
- * This rountine increments the thread dispatch level
- */
- uint32_t _Thread_Dispatch_increment_disable_level(void);
-
- /**
- * @brief Decrements the thread dispatch level.
- *
- * This routine decrements the thread dispatch level.
- */
- uint32_t _Thread_Dispatch_decrement_disable_level(void);
-
-#else
- /*
- * The _Thread_Dispatch_... functions are in thread.inl
- */
-#endif
#ifndef __RTEMS_APPLICATION__
#include <rtems/score/thread.inl>
diff --git a/cpukit/score/include/rtems/score/threaddispatch.h b/cpukit/score/include/rtems/score/threaddispatch.h
new file mode 100644
index 0000000000..292bf27c32
--- /dev/null
+++ b/cpukit/score/include/rtems/score/threaddispatch.h
@@ -0,0 +1,264 @@
+/**
+ * @brief Constants and Structures Related with Thread Dispatch
+ */
+
+/*
+ * COPYRIGHT (c) 1989-2009.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#ifndef _RTEMS_SCORE_THREADDISPATCH_H
+#define _RTEMS_SCORE_THREADDISPATCH_H
+
+#include <rtems/score/cpu.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#if defined(RTEMS_SMP) || \
+ defined(RTEMS_HEAVY_STACK_DEBUG) || \
+ defined(RTEMS_HEAVY_MALLOC_DEBUG)
+ #define __THREAD_DO_NOT_INLINE_DISABLE_DISPATCH__
+#endif
+
+#if defined(RTEMS_SMP) || \
+ (CPU_INLINE_ENABLE_DISPATCH == FALSE) || \
+ (__RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH__ == 1)
+ #define __THREAD_DO_NOT_INLINE_ENABLE_DISPATCH__
+#endif
+
+/**
+ * @addtogroup ScoreThread
+ *
+ * @{
+ */
+
+/**
+ * The following declares the dispatch critical section nesting
+ * counter which is used to prevent context switches at inopportune
+ * moments.
+ */
+SCORE_EXTERN volatile uint32_t _Thread_Dispatch_disable_level;
+
+#if defined(RTEMS_SMP)
+ typedef struct {
+ SMP_lock_Control lock;
+ int owner_cpu;
+ int nest_level;
+ } Thread_Dispatch_disable_level_lock_control;
+
+ /**
+ * The following declares the smp spinlock to be used to control
+ * the dispatch critical section accesses across cpus.
+ */
+ SCORE_EXTERN Thread_Dispatch_disable_level_lock_control
+ _Thread_Dispatch_disable_level_lock;
+
+ /**
+ * @brief Initializes the thread dispatching subsystem.
+ *
+ * This routine initializes the thread dispatching subsystem.
+ */
+ void _Thread_Dispatch_initialization(void);
+
+ /**
+ * @brief Checks if thread dispatch says that we are in a critical section.
+ *
+ * This routine returns true if thread dispatch indicates
+ * that we are in a critical section.
+ */
+ bool _Thread_Dispatch_in_critical_section(void);
+
+ /**
+ * @brief Returns value of the the thread dispatch level.
+ *
+ * This routine returns value of the the thread dispatch level.
+ */
+ uint32_t _Thread_Dispatch_get_disable_level(void);
+
+ /**
+ * @brief Sets thread dispatch level to the value passed in.
+ *
+ * This routine sets thread dispatch level to the
+ * value passed in.
+ */
+ uint32_t _Thread_Dispatch_set_disable_level(uint32_t value);
+
+ /**
+ * @brief Increments the thread dispatch level.
+ *
+ * This rountine increments the thread dispatch level
+ */
+ uint32_t _Thread_Dispatch_increment_disable_level(void);
+
+ /**
+ * @brief Decrements the thread dispatch level.
+ *
+ * This routine decrements the thread dispatch level.
+ */
+ uint32_t _Thread_Dispatch_decrement_disable_level(void);
+#else /* RTEMS_SMP */
+ /**
+ * @brief _Thread_Dispatch_in_critical_section
+ *
+ * This routine returns true if thread dispatch indicates
+ * that we are in a critical section.
+ */
+ RTEMS_INLINE_ROUTINE bool _Thread_Dispatch_in_critical_section(void)
+ {
+ if ( _Thread_Dispatch_disable_level == 0 )
+ return false;
+
+ return true;
+ }
+
+ /**
+ * @brief Get thread dispatch disable level.
+ *
+ * This routine returns value of the the thread dispatch level.
+ */
+ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_get_disable_level(void)
+ {
+ return _Thread_Dispatch_disable_level;
+ }
+
+ /**
+ * @brief Set thread dispatch disable level.
+ *
+ * This routine sets thread dispatch level to the
+ * value passed in.
+ */
+ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_set_disable_level(uint32_t value)
+ {
+ _Thread_Dispatch_disable_level = value;
+ return value;
+ }
+
+ /**
+ * @brief Increase thread dispatch disable level.
+ *
+ * This rountine increments the thread dispatch level
+ */
+ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
+ {
+ uint32_t level = _Thread_Dispatch_disable_level;
+
+ ++level;
+ _Thread_Dispatch_disable_level = level;
+
+ return level;
+ }
+
+ /**
+ * @brief Decrease thread dispatch disable level.
+ *
+ * This routine decrements the thread dispatch level.
+ */
+ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
+ {
+ uint32_t level = _Thread_Dispatch_disable_level;
+
+ --level;
+ _Thread_Dispatch_disable_level = level;
+
+ return level;
+ }
+
+ /**
+ * @brief Thread dispatch initialization.
+ *
+ * This routine initializes the thread dispatching subsystem.
+ */
+ RTEMS_INLINE_ROUTINE void _Thread_Dispatch_initialization( void )
+ {
+ _Thread_Dispatch_set_disable_level( 1 );
+ }
+#endif /* RTEMS_SMP */
+
+/**
+ * @brief Dispatch thread.
+ *
+ * This routine is responsible for transferring control of the
+ * processor from the executing thread to the heir thread. Once the
+ * heir is running an attempt is made to dispatch any ASRs.
+ * As part of this process, it is responsible for the following actions:
+ * + saving the context of the executing thread
+ * + restoring the context of the heir thread
+ * + dispatching any signals for the resulting executing thread
+
+ * ALTERNATE ENTRY POINTS:
+ * void _Thread_Enable_dispatch();
+ *
+ * - INTERRUPT LATENCY:
+ * + dispatch thread
+ * + no dispatch thread
+ */
+void _Thread_Dispatch( void );
+
+/**
+ * This routine prevents dispatching.
+ */
+
+#if defined ( __THREAD_DO_NOT_INLINE_DISABLE_DISPATCH__ )
+void _Thread_Disable_dispatch( void );
+#else
+RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void )
+{
+ _Thread_Dispatch_increment_disable_level();
+ RTEMS_COMPILER_MEMORY_BARRIER();
+}
+#endif
+
+/**
+ * This routine allows dispatching to occur again. If this is
+ * the outer most dispatching critical section, then a dispatching
+ * operation will be performed and, if necessary, control of the
+ * processor will be transferred to the heir thread.
+ */
+
+#if defined ( __THREAD_DO_NOT_INLINE_ENABLE_DISPATCH__ )
+ void _Thread_Enable_dispatch( void );
+#else
+ /* inlining of enable dispatching must be true */
+ RTEMS_INLINE_ROUTINE void _Thread_Enable_dispatch( void )
+ {
+ RTEMS_COMPILER_MEMORY_BARRIER();
+ if ( _Thread_Dispatch_decrement_disable_level() == 0 )
+ _Thread_Dispatch();
+ }
+#endif
+
+/**
+ * This routine allows dispatching to occur again. However,
+ * no dispatching operation is performed even if this is the outer
+ * most dispatching critical section.
+ */
+
+RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
+{
+ RTEMS_COMPILER_MEMORY_BARRIER();
+ _Thread_Dispatch_decrement_disable_level();
+}
+
+/**
+ * This function returns true if dispatching is disabled, and false
+ * otherwise.
+ */
+
+RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void )
+{
+ return ( _Thread_Dispatch_in_critical_section() == false );
+}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _RTEMS_SCORE_THREADDISPATCH_H */
diff --git a/cpukit/score/inline/rtems/score/coremutex.inl b/cpukit/score/inline/rtems/score/coremutex.inl
index d34a967bd3..591cded136 100644
--- a/cpukit/score/inline/rtems/score/coremutex.inl
+++ b/cpukit/score/inline/rtems/score/coremutex.inl
@@ -23,6 +23,8 @@
#ifndef _RTEMS_SCORE_COREMUTEX_INL
#define _RTEMS_SCORE_COREMUTEX_INL
+#include <rtems/score/threaddispatch.h>
+
/**
* @addtogroup ScoreMutex
*/
diff --git a/cpukit/score/inline/rtems/score/coresem.inl b/cpukit/score/inline/rtems/score/coresem.inl
index aa021eb1db..0ae3b33cd3 100644
--- a/cpukit/score/inline/rtems/score/coresem.inl
+++ b/cpukit/score/inline/rtems/score/coresem.inl
@@ -29,6 +29,7 @@
/**@{**/
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/score/threadq.h>
/**
diff --git a/cpukit/score/inline/rtems/score/object.inl b/cpukit/score/inline/rtems/score/object.inl
index 726d676cd9..efdb23d0e3 100644
--- a/cpukit/score/inline/rtems/score/object.inl
+++ b/cpukit/score/inline/rtems/score/object.inl
@@ -23,6 +23,8 @@
#ifndef _RTEMS_SCORE_OBJECT_INL
#define _RTEMS_SCORE_OBJECT_INL
+#include <rtems/score/threaddispatch.h>
+
/**
* This function builds an object's id from the processor node and index
* values specified.
diff --git a/cpukit/score/inline/rtems/score/thread.inl b/cpukit/score/inline/rtems/score/thread.inl
index a42da1d5b8..e6e192901d 100644
--- a/cpukit/score/inline/rtems/score/thread.inl
+++ b/cpukit/score/inline/rtems/score/thread.inl
@@ -31,91 +31,6 @@
*/
/**@{**/
-#if defined(RTEMS_SMP)
-
- /*
- * The _Thread_Dispatch_... functions are prototyped in thread.h.
- */
-
-#else
-
- /**
- * @brief _Thread_Dispatch_in_critical_section
- *
- * This routine returns true if thread dispatch indicates
- * that we are in a critical section.
- */
- RTEMS_INLINE_ROUTINE bool _Thread_Dispatch_in_critical_section(void)
- {
- if ( _Thread_Dispatch_disable_level == 0 )
- return false;
-
- return true;
- }
-
- /**
- * @brief Get thread dispatch disable level.
- *
- * This routine returns value of the the thread dispatch level.
- */
- RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_get_disable_level(void)
- {
- return _Thread_Dispatch_disable_level;
- }
-
- /**
- * @brief Set thread dispatch disable level.
- *
- * This routine sets thread dispatch level to the
- * value passed in.
- */
- RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_set_disable_level(uint32_t value)
- {
- _Thread_Dispatch_disable_level = value;
- return value;
- }
-
- /**
- * @brief Increase thread dispatch disable level.
- *
- * This rountine increments the thread dispatch level
- */
- RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
- {
- uint32_t level = _Thread_Dispatch_disable_level;
-
- ++level;
- _Thread_Dispatch_disable_level = level;
-
- return level;
- }
-
- /**
- * @brief Decrease thread dispatch disable level.
- *
- * This routine decrements the thread dispatch level.
- */
- RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
- {
- uint32_t level = _Thread_Dispatch_disable_level;
-
- --level;
- _Thread_Dispatch_disable_level = level;
-
- return level;
- }
-
- /**
- * @brief Thread dispatch initialization.
- *
- * This routine initializes the thread dispatching subsystem.
- */
- RTEMS_INLINE_ROUTINE void _Thread_Dispatch_initialization( void )
- {
- _Thread_Dispatch_set_disable_level( 1 );
- }
-
-#endif
/**
* This routine halts multitasking and returns control to
@@ -237,61 +152,6 @@ RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void )
#endif
/**
- * This routine prevents dispatching.
- */
-
-#if defined ( __THREAD_DO_NOT_INLINE_DISABLE_DISPATCH__ )
-void _Thread_Disable_dispatch( void );
-#else
-RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void )
-{
- _Thread_Dispatch_increment_disable_level();
- RTEMS_COMPILER_MEMORY_BARRIER();
-}
-#endif
-
-/**
- * This routine allows dispatching to occur again. If this is
- * the outer most dispatching critical section, then a dispatching
- * operation will be performed and, if necessary, control of the
- * processor will be transferred to the heir thread.
- */
-
-#if defined ( __THREAD_DO_NOT_INLINE_ENABLE_DISPATCH__ )
- void _Thread_Enable_dispatch( void );
-#else
- /* inlining of enable dispatching must be true */
- RTEMS_INLINE_ROUTINE void _Thread_Enable_dispatch( void )
- {
- RTEMS_COMPILER_MEMORY_BARRIER();
- if ( _Thread_Dispatch_decrement_disable_level() == 0 )
- _Thread_Dispatch();
- }
-#endif
-
-/**
- * This routine allows dispatching to occur again. However,
- * no dispatching operation is performed even if this is the outer
- * most dispatching critical section.
- */
-
-RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
-{
- RTEMS_COMPILER_MEMORY_BARRIER();
- _Thread_Dispatch_decrement_disable_level();
-}
-
-/**
- * This function returns true if dispatching is disabled, and false
- * otherwise.
- */
-
-RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void )
-{
- return ( _Thread_Dispatch_in_critical_section() == false );
-}
-
-/**
* This function returns true if dispatching is disabled, and false
* otherwise.
*/
diff --git a/cpukit/score/preinstall.am b/cpukit/score/preinstall.am
index 9499f4d0ea..6d796e072b 100644
--- a/cpukit/score/preinstall.am
+++ b/cpukit/score/preinstall.am
@@ -159,6 +159,10 @@ $(PROJECT_INCLUDE)/rtems/score/thread.h: include/rtems/score/thread.h $(PROJECT_
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/thread.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/thread.h
+$(PROJECT_INCLUDE)/rtems/score/threaddispatch.h: include/rtems/score/threaddispatch.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/threaddispatch.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/threaddispatch.h
+
$(PROJECT_INCLUDE)/rtems/score/threadq.h: include/rtems/score/threadq.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/threadq.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/threadq.h
diff --git a/cpukit/score/src/corerwlocktimeout.c b/cpukit/score/src/corerwlocktimeout.c
index b5cd4b0786..73e93f8eb0 100644
--- a/cpukit/score/src/corerwlocktimeout.c
+++ b/cpukit/score/src/corerwlocktimeout.c
@@ -20,7 +20,7 @@
#include <rtems/system.h>
#include <rtems/score/corerwlock.h>
-#include <rtems/score/corerwlock.h>
+#include <rtems/score/threaddispatch.h>
void _CORE_RWLock_Timeout(
Objects_Id id,
diff --git a/cpukit/score/src/corespinlockwait.c b/cpukit/score/src/corespinlockwait.c
index fa2fb11216..6e71a1fed6 100644
--- a/cpukit/score/src/corespinlockwait.c
+++ b/cpukit/score/src/corespinlockwait.c
@@ -22,6 +22,7 @@
#include <rtems/score/corespinlock.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/score/watchdog.h>
/*
diff --git a/cpukit/score/src/coretodset.c b/cpukit/score/src/coretodset.c
index 57a7d45d37..b141e2819a 100644
--- a/cpukit/score/src/coretodset.c
+++ b/cpukit/score/src/coretodset.c
@@ -21,6 +21,7 @@
#include <rtems/system.h>
#include <rtems/score/object.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/score/timestamp.h>
#include <rtems/score/tod.h>
#include <rtems/score/watchdog.h>
diff --git a/cpukit/score/src/isrsmp.c b/cpukit/score/src/isrsmp.c
index 7fb3f75bc3..92442875aa 100644
--- a/cpukit/score/src/isrsmp.c
+++ b/cpukit/score/src/isrsmp.c
@@ -21,6 +21,7 @@
#include <rtems/system.h>
#include <rtems/score/isr.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/score/smp.h>
void _ISR_SMP_Initialize(void)
diff --git a/cpukit/score/src/schedulercbsattachthread.c b/cpukit/score/src/schedulercbsattachthread.c
index 56602a22d1..5a9ba04721 100644
--- a/cpukit/score/src/schedulercbsattachthread.c
+++ b/cpukit/score/src/schedulercbsattachthread.c
@@ -22,6 +22,7 @@
#include <rtems/config.h>
#include <rtems/score/scheduler.h>
#include <rtems/score/schedulercbs.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/rtems/object.h>
int _Scheduler_CBS_Attach_thread (
diff --git a/cpukit/score/src/schedulercbsdetachthread.c b/cpukit/score/src/schedulercbsdetachthread.c
index 8be62f783d..f4ce6029cc 100644
--- a/cpukit/score/src/schedulercbsdetachthread.c
+++ b/cpukit/score/src/schedulercbsdetachthread.c
@@ -23,6 +23,7 @@
#include <rtems/config.h>
#include <rtems/score/scheduler.h>
#include <rtems/score/schedulercbs.h>
+#include <rtems/score/threaddispatch.h>
int _Scheduler_CBS_Detach_thread (
Scheduler_CBS_Server_id server_id,
diff --git a/cpukit/score/src/schedulercbsgetexecutiontime.c b/cpukit/score/src/schedulercbsgetexecutiontime.c
index c2c0a3ef23..005cd325ad 100644
--- a/cpukit/score/src/schedulercbsgetexecutiontime.c
+++ b/cpukit/score/src/schedulercbsgetexecutiontime.c
@@ -23,6 +23,7 @@
#include <rtems/config.h>
#include <rtems/score/scheduler.h>
#include <rtems/score/schedulercbs.h>
+#include <rtems/score/threaddispatch.h>
int _Scheduler_CBS_Get_execution_time (
Scheduler_CBS_Server_id server_id,
diff --git a/cpukit/score/src/schedulercbsgetremainingbudget.c b/cpukit/score/src/schedulercbsgetremainingbudget.c
index 2d79995a46..892c371d0f 100644
--- a/cpukit/score/src/schedulercbsgetremainingbudget.c
+++ b/cpukit/score/src/schedulercbsgetremainingbudget.c
@@ -22,6 +22,7 @@
#include <rtems/config.h>
#include <rtems/score/scheduler.h>
#include <rtems/score/schedulercbs.h>
+#include <rtems/score/threaddispatch.h>
int _Scheduler_CBS_Get_remaining_budget (
Scheduler_CBS_Server_id server_id,
diff --git a/cpukit/score/src/smp.c b/cpukit/score/src/smp.c
index 6f1bc55cc8..d8ceba45ea 100644
--- a/cpukit/score/src/smp.c
+++ b/cpukit/score/src/smp.c
@@ -22,6 +22,7 @@
#include <rtems/bspsmp.h>
#include <rtems/score/smp.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#if defined(RTEMS_DEBUG)
#include <rtems/bspIo.h>
diff --git a/cpukit/score/src/threadclose.c b/cpukit/score/src/threadclose.c
index 05abcefa61..73fff78b73 100644
--- a/cpukit/score/src/threadclose.c
+++ b/cpukit/score/src/threadclose.c
@@ -29,6 +29,7 @@
#include <rtems/score/states.h>
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/score/threadq.h>
#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
diff --git a/cpukit/score/src/threaddelayended.c b/cpukit/score/src/threaddelayended.c
index a050669fa5..2750fb7788 100644
--- a/cpukit/score/src/threaddelayended.c
+++ b/cpukit/score/src/threaddelayended.c
@@ -28,6 +28,7 @@
#include <rtems/score/states.h>
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/score/threadq.h>
#include <rtems/score/wkspace.h>
diff --git a/cpukit/score/src/threaddisabledispatch.c b/cpukit/score/src/threaddisabledispatch.c
index 779547dc3a..d89bc924fd 100644
--- a/cpukit/score/src/threaddisabledispatch.c
+++ b/cpukit/score/src/threaddisabledispatch.c
@@ -22,6 +22,7 @@
#include <rtems/system.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#if defined ( __THREAD_DO_NOT_INLINE_DISABLE_DISPATCH__ )
void _Thread_Disable_dispatch( void )
diff --git a/cpukit/score/src/threaddispatch.c b/cpukit/score/src/threaddispatch.c
index 66c7bdcd43..4856f8e67b 100644
--- a/cpukit/score/src/threaddispatch.c
+++ b/cpukit/score/src/threaddispatch.c
@@ -28,6 +28,7 @@
#include <rtems/score/states.h>
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/score/threadq.h>
#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
diff --git a/cpukit/score/src/threaddispatchdisablelevel.c b/cpukit/score/src/threaddispatchdisablelevel.c
index b1930909bb..ee1bfebe67 100644
--- a/cpukit/score/src/threaddispatchdisablelevel.c
+++ b/cpukit/score/src/threaddispatchdisablelevel.c
@@ -24,7 +24,7 @@
#include <rtems/score/priority.h>
#include <rtems/score/states.h>
#include <rtems/score/sysstate.h>
-#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#define NO_OWNER_CPU (-1)
diff --git a/cpukit/score/src/threadget.c b/cpukit/score/src/threadget.c
index 4bef8681b2..69551f0b11 100644
--- a/cpukit/score/src/threadget.c
+++ b/cpukit/score/src/threadget.c
@@ -29,6 +29,7 @@
#include <rtems/score/states.h>
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/score/threadq.h>
Thread_Control *_Thread_Get (
diff --git a/cpukit/score/src/threadhandler.c b/cpukit/score/src/threadhandler.c
index e4f124c052..f21722a063 100644
--- a/cpukit/score/src/threadhandler.c
+++ b/cpukit/score/src/threadhandler.c
@@ -28,6 +28,7 @@
#include <rtems/score/states.h>
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/score/threadq.h>
#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
diff --git a/cpukit/score/src/threadqtimeout.c b/cpukit/score/src/threadqtimeout.c
index c1f62cf5a7..4792666cf8 100644
--- a/cpukit/score/src/threadqtimeout.c
+++ b/cpukit/score/src/threadqtimeout.c
@@ -24,6 +24,7 @@
#include <rtems/score/object.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
+#include <rtems/score/threaddispatch.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tqdata.h>