[rtems commit] score: Add and use <rtems/score/userextimpl.h>
Sebastian Huber
sebh at rtems.org
Thu Nov 22 15:31:31 UTC 2012
Module: rtems
Branch: master
Commit: 3be0c9afa328510da0c4c0dc6de82fb8359307f8
Changeset: http://git.rtems.org/rtems/commit/?id=3be0c9afa328510da0c4c0dc6de82fb8359307f8
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Thu Nov 22 14:51:25 2012 +0100
score: Add and use <rtems/score/userextimpl.h>
This file contains the parts of <rtems/score/userext.h> that are only
necessary for the RTEMS implementation.
---
cpukit/posix/src/pthread.c | 2 +-
cpukit/posix/src/pthreadinitthreads.c | 1 -
cpukit/rtems/src/taskcreate.c | 1 -
cpukit/rtems/src/taskdelete.c | 1 -
cpukit/rtems/src/taskgetnote.c | 1 -
cpukit/rtems/src/taskident.c | 1 -
cpukit/rtems/src/taskinitusers.c | 1 -
cpukit/rtems/src/taskissuspended.c | 1 -
cpukit/rtems/src/taskmode.c | 1 -
cpukit/rtems/src/taskrestart.c | 1 -
cpukit/rtems/src/taskresume.c | 1 -
cpukit/rtems/src/tasks.c | 2 +-
cpukit/rtems/src/tasksetnote.c | 1 -
cpukit/rtems/src/tasksetpriority.c | 1 -
cpukit/rtems/src/taskstart.c | 1 -
cpukit/rtems/src/tasksuspend.c | 1 -
cpukit/rtems/src/taskwakeafter.c | 1 -
cpukit/rtems/src/taskwakewhen.c | 1 -
cpukit/sapi/src/exinit.c | 2 +-
cpukit/sapi/src/extensioncreate.c | 1 +
cpukit/score/Makefile.am | 1 +
cpukit/score/include/rtems/score/userext.h | 195 --------------------
cpukit/score/include/rtems/score/userextimpl.h | 235 ++++++++++++++++++++++++
cpukit/score/preinstall.am | 4 +
cpukit/score/src/interr.c | 3 +-
cpukit/score/src/thread.c | 1 -
cpukit/score/src/threadclearstate.c | 1 -
cpukit/score/src/threadclose.c | 2 +-
cpukit/score/src/threadcreateidle.c | 1 -
cpukit/score/src/threaddelayended.c | 1 -
cpukit/score/src/threaddispatch.c | 2 +-
cpukit/score/src/threadhandler.c | 2 +-
cpukit/score/src/threadinitialize.c | 2 +-
cpukit/score/src/threadloadenv.c | 1 -
cpukit/score/src/threadready.c | 1 -
cpukit/score/src/threadreset.c | 1 -
cpukit/score/src/threadrestart.c | 2 +-
cpukit/score/src/threadsetstate.c | 1 -
cpukit/score/src/threadsettransient.c | 1 -
cpukit/score/src/threadstackallocate.c | 1 -
cpukit/score/src/threadstackfree.c | 1 -
cpukit/score/src/threadstart.c | 2 +-
cpukit/score/src/threadstartmultitasking.c | 1 -
cpukit/score/src/userext.c | 2 +-
cpukit/score/src/userextaddset.c | 3 +-
cpukit/score/src/userextiterate.c | 2 +-
cpukit/score/src/userextremoveset.c | 3 +-
cpukit/score/src/userextthreadswitch.c | 3 +-
testsuites/sptests/spsize/size.c | 2 +-
49 files changed, 257 insertions(+), 243 deletions(-)
diff --git a/cpukit/posix/src/pthread.c b/cpukit/posix/src/pthread.c
index 4c41c23..cd2cffe 100644
--- a/cpukit/posix/src/pthread.c
+++ b/cpukit/posix/src/pthread.c
@@ -20,7 +20,7 @@
#include <rtems/score/apiext.h>
#include <rtems/score/stack.h>
#include <rtems/score/thread.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
#include <rtems/posix/cancel.h>
#include <rtems/posix/pthread.h>
diff --git a/cpukit/posix/src/pthreadinitthreads.c b/cpukit/posix/src/pthreadinitthreads.c
index dc464e3..06b859b 100644
--- a/cpukit/posix/src/pthreadinitthreads.c
+++ b/cpukit/posix/src/pthreadinitthreads.c
@@ -20,7 +20,6 @@
#include <rtems/score/apiext.h>
#include <rtems/score/stack.h>
#include <rtems/score/thread.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/posix/cancel.h>
#include <rtems/posix/pthread.h>
diff --git a/cpukit/rtems/src/taskcreate.c b/cpukit/rtems/src/taskcreate.c
index 924048a..9cd6b7b 100644
--- a/cpukit/rtems/src/taskcreate.c
+++ b/cpukit/rtems/src/taskcreate.c
@@ -25,7 +25,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskdelete.c b/cpukit/rtems/src/taskdelete.c
index 00a63ac..5204569 100644
--- a/cpukit/rtems/src/taskdelete.c
+++ b/cpukit/rtems/src/taskdelete.c
@@ -25,7 +25,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskgetnote.c b/cpukit/rtems/src/taskgetnote.c
index 5773298..3696f91 100644
--- a/cpukit/rtems/src/taskgetnote.c
+++ b/cpukit/rtems/src/taskgetnote.c
@@ -26,7 +26,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskident.c b/cpukit/rtems/src/taskident.c
index 469c112..570aa35 100644
--- a/cpukit/rtems/src/taskident.c
+++ b/cpukit/rtems/src/taskident.c
@@ -25,7 +25,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskinitusers.c b/cpukit/rtems/src/taskinitusers.c
index 1d47a2b..2f4f0f9 100644
--- a/cpukit/rtems/src/taskinitusers.c
+++ b/cpukit/rtems/src/taskinitusers.c
@@ -27,7 +27,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskissuspended.c b/cpukit/rtems/src/taskissuspended.c
index 8a8dff3..179c41e 100644
--- a/cpukit/rtems/src/taskissuspended.c
+++ b/cpukit/rtems/src/taskissuspended.c
@@ -25,7 +25,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskmode.c b/cpukit/rtems/src/taskmode.c
index 17958dc..9fab226 100644
--- a/cpukit/rtems/src/taskmode.c
+++ b/cpukit/rtems/src/taskmode.c
@@ -24,7 +24,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskrestart.c b/cpukit/rtems/src/taskrestart.c
index c74fe98..3a560a9 100644
--- a/cpukit/rtems/src/taskrestart.c
+++ b/cpukit/rtems/src/taskrestart.c
@@ -25,7 +25,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskresume.c b/cpukit/rtems/src/taskresume.c
index ec7d109..e53b542 100644
--- a/cpukit/rtems/src/taskresume.c
+++ b/cpukit/rtems/src/taskresume.c
@@ -25,7 +25,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/tasks.c b/cpukit/rtems/src/tasks.c
index c679f1e..4164afe 100644
--- a/cpukit/rtems/src/tasks.c
+++ b/cpukit/rtems/src/tasks.c
@@ -25,7 +25,7 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/tasksetnote.c b/cpukit/rtems/src/tasksetnote.c
index 9bbe721..453a2a2 100644
--- a/cpukit/rtems/src/tasksetnote.c
+++ b/cpukit/rtems/src/tasksetnote.c
@@ -25,7 +25,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/tasksetpriority.c b/cpukit/rtems/src/tasksetpriority.c
index c8e3bf8..f51c565 100644
--- a/cpukit/rtems/src/tasksetpriority.c
+++ b/cpukit/rtems/src/tasksetpriority.c
@@ -25,7 +25,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskstart.c b/cpukit/rtems/src/taskstart.c
index 9c6cc5b..c6f1078 100644
--- a/cpukit/rtems/src/taskstart.c
+++ b/cpukit/rtems/src/taskstart.c
@@ -25,7 +25,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/tasksuspend.c b/cpukit/rtems/src/tasksuspend.c
index 23d9ecc..e1e82dd 100644
--- a/cpukit/rtems/src/tasksuspend.c
+++ b/cpukit/rtems/src/tasksuspend.c
@@ -25,7 +25,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskwakeafter.c b/cpukit/rtems/src/taskwakeafter.c
index 190d11e..bf28e0b 100644
--- a/cpukit/rtems/src/taskwakeafter.c
+++ b/cpukit/rtems/src/taskwakeafter.c
@@ -26,7 +26,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/rtems/src/taskwakewhen.c b/cpukit/rtems/src/taskwakewhen.c
index d181848..0a420b2 100644
--- a/cpukit/rtems/src/taskwakewhen.c
+++ b/cpukit/rtems/src/taskwakewhen.c
@@ -26,7 +26,6 @@
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/score/apiext.h>
#include <rtems/score/sysstate.h>
diff --git a/cpukit/sapi/src/exinit.c b/cpukit/sapi/src/exinit.c
index 7335128..2c68434 100644
--- a/cpukit/sapi/src/exinit.c
+++ b/cpukit/sapi/src/exinit.c
@@ -43,7 +43,7 @@
#include <rtems/score/scheduler.h>
#include <rtems/score/thread.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/watchdog.h>
#include <rtems/score/wkspace.h>
diff --git a/cpukit/sapi/src/extensioncreate.c b/cpukit/sapi/src/extensioncreate.c
index d852c83..f963e0a 100644
--- a/cpukit/sapi/src/extensioncreate.c
+++ b/cpukit/sapi/src/extensioncreate.c
@@ -23,6 +23,7 @@
#include <rtems/rtems/support.h>
#include <rtems/score/object.h>
#include <rtems/score/thread.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/extension.h>
rtems_status_code rtems_extension_create(
diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am
index 656c198..79d95ea 100644
--- a/cpukit/score/Makefile.am
+++ b/cpukit/score/Makefile.am
@@ -52,6 +52,7 @@ include_rtems_score_HEADERS += include/rtems/score/timestamp64.h
include_rtems_score_HEADERS += include/rtems/score/tod.h
include_rtems_score_HEADERS += include/rtems/score/tqdata.h
include_rtems_score_HEADERS += include/rtems/score/userext.h
+include_rtems_score_HEADERS += include/rtems/score/userextimpl.h
include_rtems_score_HEADERS += include/rtems/score/watchdog.h
include_rtems_score_HEADERS += include/rtems/score/wkspace.h
include_rtems_score_HEADERS += include/rtems/score/cpuopts.h
diff --git a/cpukit/score/include/rtems/score/userext.h b/cpukit/score/include/rtems/score/userext.h
index b182e86..6071d7a 100644
--- a/cpukit/score/include/rtems/score/userext.h
+++ b/cpukit/score/include/rtems/score/userext.h
@@ -231,201 +231,6 @@ typedef struct {
User_extensions_Table Callouts;
} User_extensions_Control;
-/**
- * @brief List of active extensions.
- */
-extern Chain_Control _User_extensions_List;
-
-/**
- * @brief List of active task switch extensions.
- */
-extern Chain_Control _User_extensions_Switches_list;
-
-/**
- * @name Extension Maintainance
- *
- * @{
- */
-
-void _User_extensions_Handler_initialization( void );
-
-void _User_extensions_Add_set(
- User_extensions_Control *extension
-);
-
-RTEMS_INLINE_ROUTINE void _User_extensions_Add_API_set(
- User_extensions_Control *extension
-)
-{
- _User_extensions_Add_set( extension );
-}
-
-RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(
- User_extensions_Control *extension,
- const User_extensions_Table *extension_table
-)
-{
- extension->Callouts = *extension_table;
-
- _User_extensions_Add_set( extension );
-}
-
-void _User_extensions_Remove_set(
- User_extensions_Control *extension
-);
-
-/**
- * @brief User extension visitor.
- *
- * @param[in, out] executing The currently executing thread.
- * @param[in, out] arg The argument passed to _User_extensions_Iterate().
- * @param[in] callouts The current callouts.
- */
-typedef void (*User_extensions_Visitor)(
- Thread_Control *executing,
- void *arg,
- const User_extensions_Table *callouts
-);
-
-typedef struct {
- Thread_Control *created;
- bool ok;
-} User_extensions_Thread_create_context;
-
-void _User_extensions_Thread_create_visitor(
- Thread_Control *executing,
- void *arg,
- const User_extensions_Table *callouts
-);
-
-void _User_extensions_Thread_delete_visitor(
- Thread_Control *executing,
- void *arg,
- const User_extensions_Table *callouts
-);
-
-void _User_extensions_Thread_start_visitor(
- Thread_Control *executing,
- void *arg,
- const User_extensions_Table *callouts
-);
-
-void _User_extensions_Thread_restart_visitor(
- Thread_Control *executing,
- void *arg,
- const User_extensions_Table *callouts
-);
-
-void _User_extensions_Thread_begin_visitor(
- Thread_Control *executing,
- void *arg,
- const User_extensions_Table *callouts
-);
-
-void _User_extensions_Thread_exitted_visitor(
- Thread_Control *executing,
- void *arg,
- const User_extensions_Table *callouts
-);
-
-typedef struct {
- Internal_errors_Source source;
- bool is_internal;
- Internal_errors_t error;
-} User_extensions_Fatal_context;
-
-void _User_extensions_Fatal_visitor(
- Thread_Control *executing,
- void *arg,
- const User_extensions_Table *callouts
-);
-
-/**
- * @brief Iterates through all user extensions and calls the visitor for each.
- *
- * @param[in, out] arg The argument passed to the visitor.
- * @param[in] visitor The visitor for each extension.
- */
-void _User_extensions_Iterate(
- void *arg,
- User_extensions_Visitor visitor
-);
-
-/** @} */
-
-/**
- * @name Extension Callout Dispatcher
- *
- * @{
- */
-
-static inline bool _User_extensions_Thread_create( Thread_Control *created )
-{
- User_extensions_Thread_create_context ctx = { created, true };
-
- _User_extensions_Iterate( &ctx, _User_extensions_Thread_create_visitor );
-
- return ctx.ok;
-}
-
-static inline void _User_extensions_Thread_delete( Thread_Control *deleted )
-{
- _User_extensions_Iterate(
- deleted,
- _User_extensions_Thread_delete_visitor
- );
-}
-
-static inline void _User_extensions_Thread_start( Thread_Control *started )
-{
- _User_extensions_Iterate(
- started,
- _User_extensions_Thread_start_visitor
- );
-}
-
-static inline void _User_extensions_Thread_restart( Thread_Control *restarted )
-{
- _User_extensions_Iterate(
- restarted,
- _User_extensions_Thread_restart_visitor
- );
-}
-
-static inline void _User_extensions_Thread_begin( Thread_Control *executing )
-{
- _User_extensions_Iterate(
- executing,
- _User_extensions_Thread_begin_visitor
- );
-}
-
-void _User_extensions_Thread_switch(
- Thread_Control *executing,
- Thread_Control *heir
-);
-
-static inline void _User_extensions_Thread_exitted( Thread_Control *executing )
-{
- _User_extensions_Iterate(
- executing,
- _User_extensions_Thread_exitted_visitor
- );
-}
-
-static inline void _User_extensions_Fatal(
- Internal_errors_Source source,
- bool is_internal,
- Internal_errors_t error
-)
-{
- User_extensions_Fatal_context ctx = { source, is_internal, error };
-
- _User_extensions_Iterate( &ctx, _User_extensions_Fatal_visitor );
-}
-
-/** @} */
-
/** @} */
#ifdef __cplusplus
diff --git a/cpukit/score/include/rtems/score/userextimpl.h b/cpukit/score/include/rtems/score/userextimpl.h
new file mode 100644
index 0000000..665278e
--- /dev/null
+++ b/cpukit/score/include/rtems/score/userextimpl.h
@@ -0,0 +1,235 @@
+/**
+ * @file
+ *
+ * @ingroup ScoreUserExt
+ *
+ * @brief User Extension Handler API.
+ */
+
+/*
+ * 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_USEREXTIMPL_H
+#define _RTEMS_SCORE_USEREXTIMPL_H
+
+#include <rtems/score/userext.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup ScoreUserExt
+ *
+ * @{
+ */
+
+/**
+ * @brief List of active extensions.
+ */
+extern Chain_Control _User_extensions_List;
+
+/**
+ * @brief List of active task switch extensions.
+ */
+extern Chain_Control _User_extensions_Switches_list;
+
+/**
+ * @name Extension Maintainance
+ *
+ * @{
+ */
+
+void _User_extensions_Handler_initialization( void );
+
+void _User_extensions_Add_set(
+ User_extensions_Control *extension
+);
+
+RTEMS_INLINE_ROUTINE void _User_extensions_Add_API_set(
+ User_extensions_Control *extension
+)
+{
+ _User_extensions_Add_set( extension );
+}
+
+RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(
+ User_extensions_Control *extension,
+ const User_extensions_Table *extension_table
+)
+{
+ extension->Callouts = *extension_table;
+
+ _User_extensions_Add_set( extension );
+}
+
+void _User_extensions_Remove_set(
+ User_extensions_Control *extension
+);
+
+/**
+ * @brief User extension visitor.
+ *
+ * @param[in, out] executing The currently executing thread.
+ * @param[in, out] arg The argument passed to _User_extensions_Iterate().
+ * @param[in] callouts The current callouts.
+ */
+typedef void (*User_extensions_Visitor)(
+ Thread_Control *executing,
+ void *arg,
+ const User_extensions_Table *callouts
+);
+
+typedef struct {
+ Thread_Control *created;
+ bool ok;
+} User_extensions_Thread_create_context;
+
+void _User_extensions_Thread_create_visitor(
+ Thread_Control *executing,
+ void *arg,
+ const User_extensions_Table *callouts
+);
+
+void _User_extensions_Thread_delete_visitor(
+ Thread_Control *executing,
+ void *arg,
+ const User_extensions_Table *callouts
+);
+
+void _User_extensions_Thread_start_visitor(
+ Thread_Control *executing,
+ void *arg,
+ const User_extensions_Table *callouts
+);
+
+void _User_extensions_Thread_restart_visitor(
+ Thread_Control *executing,
+ void *arg,
+ const User_extensions_Table *callouts
+);
+
+void _User_extensions_Thread_begin_visitor(
+ Thread_Control *executing,
+ void *arg,
+ const User_extensions_Table *callouts
+);
+
+void _User_extensions_Thread_exitted_visitor(
+ Thread_Control *executing,
+ void *arg,
+ const User_extensions_Table *callouts
+);
+
+typedef struct {
+ Internal_errors_Source source;
+ bool is_internal;
+ Internal_errors_t error;
+} User_extensions_Fatal_context;
+
+void _User_extensions_Fatal_visitor(
+ Thread_Control *executing,
+ void *arg,
+ const User_extensions_Table *callouts
+);
+
+/**
+ * @brief Iterates through all user extensions and calls the visitor for each.
+ *
+ * @param[in, out] arg The argument passed to the visitor.
+ * @param[in] visitor The visitor for each extension.
+ */
+void _User_extensions_Iterate(
+ void *arg,
+ User_extensions_Visitor visitor
+);
+
+/** @} */
+
+/**
+ * @name Extension Callout Dispatcher
+ *
+ * @{
+ */
+
+static inline bool _User_extensions_Thread_create( Thread_Control *created )
+{
+ User_extensions_Thread_create_context ctx = { created, true };
+
+ _User_extensions_Iterate( &ctx, _User_extensions_Thread_create_visitor );
+
+ return ctx.ok;
+}
+
+static inline void _User_extensions_Thread_delete( Thread_Control *deleted )
+{
+ _User_extensions_Iterate(
+ deleted,
+ _User_extensions_Thread_delete_visitor
+ );
+}
+
+static inline void _User_extensions_Thread_start( Thread_Control *started )
+{
+ _User_extensions_Iterate(
+ started,
+ _User_extensions_Thread_start_visitor
+ );
+}
+
+static inline void _User_extensions_Thread_restart( Thread_Control *restarted )
+{
+ _User_extensions_Iterate(
+ restarted,
+ _User_extensions_Thread_restart_visitor
+ );
+}
+
+static inline void _User_extensions_Thread_begin( Thread_Control *executing )
+{
+ _User_extensions_Iterate(
+ executing,
+ _User_extensions_Thread_begin_visitor
+ );
+}
+
+void _User_extensions_Thread_switch(
+ Thread_Control *executing,
+ Thread_Control *heir
+);
+
+static inline void _User_extensions_Thread_exitted( Thread_Control *executing )
+{
+ _User_extensions_Iterate(
+ executing,
+ _User_extensions_Thread_exitted_visitor
+ );
+}
+
+static inline void _User_extensions_Fatal(
+ Internal_errors_Source source,
+ bool is_internal,
+ Internal_errors_t error
+)
+{
+ User_extensions_Fatal_context ctx = { source, is_internal, error };
+
+ _User_extensions_Iterate( &ctx, _User_extensions_Fatal_visitor );
+}
+
+/** @} */
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
diff --git a/cpukit/score/preinstall.am b/cpukit/score/preinstall.am
index 09c6fa9..e887758 100644
--- a/cpukit/score/preinstall.am
+++ b/cpukit/score/preinstall.am
@@ -191,6 +191,10 @@ $(PROJECT_INCLUDE)/rtems/score/userext.h: include/rtems/score/userext.h $(PROJEC
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/userext.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/userext.h
+$(PROJECT_INCLUDE)/rtems/score/userextimpl.h: include/rtems/score/userextimpl.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/userextimpl.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/userextimpl.h
+
$(PROJECT_INCLUDE)/rtems/score/watchdog.h: include/rtems/score/watchdog.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/watchdog.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/watchdog.h
diff --git a/cpukit/score/src/interr.c b/cpukit/score/src/interr.c
index 50b3ffd..3e5eb79 100644
--- a/cpukit/score/src/interr.c
+++ b/cpukit/score/src/interr.c
@@ -13,10 +13,9 @@
#include "config.h"
#endif
-#include <rtems/system.h>
#include <rtems/score/interr.h>
#include <rtems/score/sysstate.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
System_state_Codes _System_state_Current;
diff --git a/cpukit/score/src/thread.c b/cpukit/score/src/thread.c
index af5c67f..b598627 100644
--- a/cpukit/score/src/thread.c
+++ b/cpukit/score/src/thread.c
@@ -27,7 +27,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/config.h>
diff --git a/cpukit/score/src/threadclearstate.c b/cpukit/score/src/threadclearstate.c
index 00e5397..492f533 100644
--- a/cpukit/score/src/threadclearstate.c
+++ b/cpukit/score/src/threadclearstate.c
@@ -25,7 +25,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
/*
diff --git a/cpukit/score/src/threadclose.c b/cpukit/score/src/threadclose.c
index 48e6e6a..6fc72b5 100644
--- a/cpukit/score/src/threadclose.c
+++ b/cpukit/score/src/threadclose.c
@@ -25,7 +25,7 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
void _Thread_Close(
diff --git a/cpukit/score/src/threadcreateidle.c b/cpukit/score/src/threadcreateidle.c
index 86209ca..1f10065 100644
--- a/cpukit/score/src/threadcreateidle.c
+++ b/cpukit/score/src/threadcreateidle.c
@@ -25,7 +25,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/config.h>
#if defined(RTEMS_SMP)
diff --git a/cpukit/score/src/threaddelayended.c b/cpukit/score/src/threaddelayended.c
index ecd5050..307064a 100644
--- a/cpukit/score/src/threaddelayended.c
+++ b/cpukit/score/src/threaddelayended.c
@@ -25,7 +25,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
/*
diff --git a/cpukit/score/src/threaddispatch.c b/cpukit/score/src/threaddispatch.c
index 8a77d1b..db1f104 100644
--- a/cpukit/score/src/threaddispatch.c
+++ b/cpukit/score/src/threaddispatch.c
@@ -24,7 +24,7 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
diff --git a/cpukit/score/src/threadhandler.c b/cpukit/score/src/threadhandler.c
index ba53fc3..7867142 100644
--- a/cpukit/score/src/threadhandler.c
+++ b/cpukit/score/src/threadhandler.c
@@ -28,7 +28,7 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
#if defined(RTEMS_SMP)
#include <rtems/score/smp.h>
diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c
index 54116ad..7fb6507 100644
--- a/cpukit/score/src/threadinitialize.c
+++ b/cpukit/score/src/threadinitialize.c
@@ -25,7 +25,7 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/watchdog.h>
#include <rtems/score/wkspace.h>
diff --git a/cpukit/score/src/threadloadenv.c b/cpukit/score/src/threadloadenv.c
index 9088a57..d2dd049 100644
--- a/cpukit/score/src/threadloadenv.c
+++ b/cpukit/score/src/threadloadenv.c
@@ -25,7 +25,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
/*
diff --git a/cpukit/score/src/threadready.c b/cpukit/score/src/threadready.c
index 8037f17..0eb00e6 100644
--- a/cpukit/score/src/threadready.c
+++ b/cpukit/score/src/threadready.c
@@ -25,7 +25,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
/*
diff --git a/cpukit/score/src/threadreset.c b/cpukit/score/src/threadreset.c
index c71f0af..18dcce8 100644
--- a/cpukit/score/src/threadreset.c
+++ b/cpukit/score/src/threadreset.c
@@ -25,7 +25,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
/*
diff --git a/cpukit/score/src/threadrestart.c b/cpukit/score/src/threadrestart.c
index 657b62a..f78c028 100644
--- a/cpukit/score/src/threadrestart.c
+++ b/cpukit/score/src/threadrestart.c
@@ -25,7 +25,7 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
/*
diff --git a/cpukit/score/src/threadsetstate.c b/cpukit/score/src/threadsetstate.c
index 94798f3..1372b5d 100644
--- a/cpukit/score/src/threadsetstate.c
+++ b/cpukit/score/src/threadsetstate.c
@@ -25,7 +25,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
/*
diff --git a/cpukit/score/src/threadsettransient.c b/cpukit/score/src/threadsettransient.c
index dd3c780..1624e67 100644
--- a/cpukit/score/src/threadsettransient.c
+++ b/cpukit/score/src/threadsettransient.c
@@ -26,7 +26,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
/*
diff --git a/cpukit/score/src/threadstackallocate.c b/cpukit/score/src/threadstackallocate.c
index d844564..d0a2b65 100644
--- a/cpukit/score/src/threadstackallocate.c
+++ b/cpukit/score/src/threadstackallocate.c
@@ -24,7 +24,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/config.h>
diff --git a/cpukit/score/src/threadstackfree.c b/cpukit/score/src/threadstackfree.c
index 410ebb0..1c20bad 100644
--- a/cpukit/score/src/threadstackfree.c
+++ b/cpukit/score/src/threadstackfree.c
@@ -25,7 +25,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <rtems/config.h>
diff --git a/cpukit/score/src/threadstart.c b/cpukit/score/src/threadstart.c
index 8e89f69..550404a 100644
--- a/cpukit/score/src/threadstart.c
+++ b/cpukit/score/src/threadstart.c
@@ -25,7 +25,7 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
/*
diff --git a/cpukit/score/src/threadstartmultitasking.c b/cpukit/score/src/threadstartmultitasking.c
index 62f7b41..acc5b26 100644
--- a/cpukit/score/src/threadstartmultitasking.c
+++ b/cpukit/score/src/threadstartmultitasking.c
@@ -25,7 +25,6 @@
#include <rtems/score/sysstate.h>
#include <rtems/score/thread.h>
#include <rtems/score/threadq.h>
-#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
/*
diff --git a/cpukit/score/src/userext.c b/cpukit/score/src/userext.c
index 78162f6..8159629 100644
--- a/cpukit/score/src/userext.c
+++ b/cpukit/score/src/userext.c
@@ -20,7 +20,7 @@
#endif
#include <rtems/config.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
CHAIN_DEFINE_EMPTY( _User_extensions_Switches_list );
diff --git a/cpukit/score/src/userextaddset.c b/cpukit/score/src/userextaddset.c
index 09509f6..d24dc4a 100644
--- a/cpukit/score/src/userextaddset.c
+++ b/cpukit/score/src/userextaddset.c
@@ -19,8 +19,7 @@
#include "config.h"
#endif
-#include <rtems/system.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
void _User_extensions_Add_set(
User_extensions_Control *the_extension
diff --git a/cpukit/score/src/userextiterate.c b/cpukit/score/src/userextiterate.c
index bab63ef..7dd2ab3 100644
--- a/cpukit/score/src/userextiterate.c
+++ b/cpukit/score/src/userextiterate.c
@@ -17,7 +17,7 @@
#endif
#include <rtems/config.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
CHAIN_DEFINE_EMPTY( _User_extensions_List );
diff --git a/cpukit/score/src/userextremoveset.c b/cpukit/score/src/userextremoveset.c
index 1b950ed..e90ff77 100644
--- a/cpukit/score/src/userextremoveset.c
+++ b/cpukit/score/src/userextremoveset.c
@@ -19,8 +19,7 @@
#include "config.h"
#endif
-#include <rtems/system.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
void _User_extensions_Remove_set (
User_extensions_Control *the_extension
diff --git a/cpukit/score/src/userextthreadswitch.c b/cpukit/score/src/userextthreadswitch.c
index e80b4c3..43d3afe 100644
--- a/cpukit/score/src/userextthreadswitch.c
+++ b/cpukit/score/src/userextthreadswitch.c
@@ -19,8 +19,7 @@
#include "config.h"
#endif
-#include <rtems/system.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
void _User_extensions_Thread_switch (
Thread_Control *executing,
diff --git a/testsuites/sptests/spsize/size.c b/testsuites/sptests/spsize/size.c
index 529cdd3..09a881a 100644
--- a/testsuites/sptests/spsize/size.c
+++ b/testsuites/sptests/spsize/size.c
@@ -44,7 +44,7 @@
#include <rtems/score/thread.h>
#include <rtems/rtems/timer.h>
#include <rtems/score/tod.h>
-#include <rtems/score/userext.h>
+#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
#if defined(RTEMS_SMP)
#include <rtems/score/smp.h>
More information about the vc
mailing list