config: Add _SMP_Is_enabled

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.
This commit is contained in:
Sebastian Huber
2020-02-14 14:04:21 +01:00
parent 567455b67a
commit ba46b9368e
4 changed files with 23 additions and 43 deletions

View File

@@ -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
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

View File

@@ -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
(_SMP_Is_enabled)
/**
* @brief Returns the configured maximum count of processors.

View File

@@ -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.
*

View File

@@ -75,7 +75,7 @@ rtems_monitor_mpci_next(
_Objects_Allocator_lock();
*next_id += 1;
return &Configuration;
return (const void *) (uintptr_t) 1;
failed:
*next_id = RTEMS_OBJECT_ID_FINAL;