diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-02-17 14:27:09 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-04 13:36:09 +0100 |
commit | b3a4c48ebd1d4cd04dd4390844df840a1c0b9dea (patch) | |
tree | f67ce0b4d71b09c8f1a806e7ae268ebc80b49406 /cpukit | |
parent | score: Rename Per_CPU_Control::started (diff) | |
download | rtems-b3a4c48ebd1d4cd04dd4390844df840a1c0b9dea.tar.bz2 |
score: Add _SMP_Online_processors
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/score/include/rtems/score/smpimpl.h | 11 | ||||
-rw-r--r-- | cpukit/score/src/smp.c | 5 |
2 files changed, 15 insertions, 1 deletions
diff --git a/cpukit/score/include/rtems/score/smpimpl.h b/cpukit/score/include/rtems/score/smpimpl.h index 09c47ecf16..386216fdfc 100644 --- a/cpukit/score/include/rtems/score/smpimpl.h +++ b/cpukit/score/include/rtems/score/smpimpl.h @@ -20,6 +20,7 @@ #include <rtems/score/smp.h> #include <rtems/score/percpu.h> +#include <rtems/score/processormask.h> #include <rtems/fatal.h> #include <rtems/rtems/cache.h> @@ -91,6 +92,16 @@ static inline void _SMP_Fatal( SMP_Fatal_code code ) #if defined( RTEMS_SMP ) /** + * @brief Set of online processors. + * + * A processor is online if was started during system initialization. In this + * case its corresponding bit in the mask is set. + * + * @see _SMP_Handler_initialize(). + */ +extern Processor_mask _SMP_Online_processors; + +/** * @brief Performs high-level initialization of a secondary processor and runs * the application threads. * diff --git a/cpukit/score/src/smp.c b/cpukit/score/src/smp.c index b2713f1272..68a55ffe4d 100644 --- a/cpukit/score/src/smp.c +++ b/cpukit/score/src/smp.c @@ -29,6 +29,8 @@ #error "deferred FP switch not implemented for SMP" #endif +Processor_mask _SMP_Online_processors; + uint32_t _SMP_Processor_count; static void _SMP_Start_processors( uint32_t cpu_count ) @@ -36,7 +38,6 @@ static void _SMP_Start_processors( uint32_t cpu_count ) uint32_t cpu_index_self = _SMP_Get_current_processor(); uint32_t cpu_index; - for ( cpu_index = 0 ; cpu_index < cpu_count; ++cpu_index ) { const Scheduler_Assignment *assignment = _Scheduler_Get_assignment( cpu_index ); @@ -69,6 +70,8 @@ static void _SMP_Start_processors( uint32_t cpu_count ) ++context->processor_count; cpu->scheduler_context = context; + + _Processor_mask_Set( _SMP_Online_processors, cpu_index ); } } } |