score: Add _SMP_Online_processors

This commit is contained in:
Sebastian Huber committed 2016-03-04 13:36:09 +01:00
1 parent c284a16000
commit b3a4c48ebd
3 files changed
+25 -1

No files matched your search

@@ -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>
@@ -90,6 +91,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.
+4 -1
View File
@@ -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 );
}
}
}
+10
View File
@@ -161,6 +161,10 @@ static void test_send_message_flood(
}
for (cpu_index = 0; cpu_index < cpu_count; ++cpu_index) {
rtems_test_assert(
_Processor_mask_Is_set(_SMP_Online_processors, cpu_index)
);
printf(
"inter-processor interrupts for processor %"
PRIu32 "%s: %" PRIu32 "\n",
@@ -169,6 +173,12 @@ static void test_send_message_flood(
ctx->counters[cpu_index].value
);
}
for (; cpu_index < CPU_COUNT; ++cpu_index) {
rtems_test_assert(
!_Processor_mask_Is_set(_SMP_Online_processors, cpu_index)
);
}
}
static void test(void)