[PATCH v2 13/44] config: Add _SMP_Is_enabled

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Feb 21 10:52:25 UTC 2020


Move the is SMP enabled configuration constant out of the
configuration table.

Since this was the last configuration constant in
rtems_configuration_table, remove this type.

Update #3875.
---
 cpukit/include/rtems/confdefs.h  | 14 ++++----------
 cpukit/include/rtems/config.h    | 31 ++-----------------------------
 cpukit/include/rtems/score/smp.h | 13 +++++++++++++
 3 files changed, 19 insertions(+), 39 deletions(-)

diff --git a/cpukit/include/rtems/confdefs.h b/cpukit/include/rtems/confdefs.h
index f8a4eb23cf..3741c9a706 100644
--- a/cpukit/include/rtems/confdefs.h
+++ b/cpukit/include/rtems/confdefs.h
@@ -2633,20 +2633,14 @@ struct _reent *__getreent(void)
     #error "CONFIGURE_TASK_STACK_ALLOCATOR and CONFIGURE_TASK_STACK_DEALLOCATOR must be both defined or both undefined"
   #endif
 
-  /**
-   * This is the primary Configuration Table for this application.
-   */
-  const rtems_configuration_table Configuration = {
-    #ifdef RTEMS_SMP
+  #ifdef RTEMS_SMP
+    const bool _SMP_Is_enabled =
       #ifdef _CONFIGURE_SMP_APPLICATION
-        true
+        true;
       #else
-        false
+        false;
       #endif
-    #endif
-  };
 
-  #ifdef RTEMS_SMP
     const uint32_t _SMP_Processor_configured_maximum =
       _CONFIGURE_MAXIMUM_PROCESSORS;
   #endif
diff --git a/cpukit/include/rtems/config.h b/cpukit/include/rtems/config.h
index 5550397623..4811d0e704 100644
--- a/cpukit/include/rtems/config.h
+++ b/cpukit/include/rtems/config.h
@@ -72,28 +72,6 @@ typedef Stack_Allocator_allocate rtems_stack_allocate_hook;
  */
 typedef Stack_Allocator_free rtems_stack_free_hook;
 
-/*
- *  The following records define the Configuration Table.  The
- *  information contained in this table is required in all
- *  RTEMS systems, whether single or multiprocessor.  This
- *  table primarily defines the following:
- *
- *     + location and size of the RTEMS Workspace
- *     + microseconds per clock tick
- *     + clock ticks per task timeslice
- *     + required number of each object type for each API configured
- */
-typedef struct {
-  #ifdef RTEMS_SMP
-    bool                         smp_enabled;
-  #endif
-} rtems_configuration_table;
-
-/**
- * This is the configuration table generated by confdefs.h.
- */
-extern const rtems_configuration_table Configuration;
-
 /*
  *  Some handy macros to avoid dependencies on either the BSP
  *  or the exact format of the configuration table.
@@ -182,13 +160,8 @@ uint32_t rtems_configuration_get_maximum_extensions( void );
  * @retval true SMP mode of operation is enabled.
  * @retval false Otherwise.
  */
-#ifdef RTEMS_SMP
-  #define rtems_configuration_is_smp_enabled() \
-        (Configuration.smp_enabled)
-#else
-  #define rtems_configuration_is_smp_enabled() \
-        false
-#endif
+#define rtems_configuration_is_smp_enabled() \
+      (_SMP_Is_enabled)
 
 /**
  * @brief Returns the configured maximum count of processors.
diff --git a/cpukit/include/rtems/score/smp.h b/cpukit/include/rtems/score/smp.h
index 2722fbdcee..36cfd981ab 100644
--- a/cpukit/include/rtems/score/smp.h
+++ b/cpukit/include/rtems/score/smp.h
@@ -36,6 +36,19 @@ extern "C" {
  * @{
  */
 
+/**
+ * @brief Indicates if SMP is enabled.
+ *
+ * In SMP configurations, this constant is defined by the application
+ * configuration via <rtems/confdefs.h>, otherwise it is a compile-time
+ * constant with the value false.
+ */
+#if defined(RTEMS_SMP)
+  extern const bool _SMP_Is_enabled;
+#else
+  #define _SMP_Is_enabled false
+#endif
+
 /**
  * @brief The configured processor maximum.
  *
-- 
2.16.4



More information about the devel mailing list