[PATCH 5/8] score: Add _Per_CPU_Is_boot_processor()
Sebastian Huber
sebastian.huber at embedded-brains.de
Thu Mar 3 14:47:52 UTC 2016
---
cpukit/score/include/rtems/score/percpu.h | 19 +++++++++++++++++++
cpukit/score/src/smp.c | 2 ++
2 files changed, 21 insertions(+)
diff --git a/cpukit/score/include/rtems/score/percpu.h b/cpukit/score/include/rtems/score/percpu.h
index 2b05b78..19f46d2 100644
--- a/cpukit/score/include/rtems/score/percpu.h
+++ b/cpukit/score/include/rtems/score/percpu.h
@@ -365,6 +365,12 @@ typedef struct Per_CPU_Control {
* _CPU_SMP_Start_processor().
*/
bool online;
+
+ /**
+ * @brief Indicates if the processor is the one that performed the initial
+ * system initialization.
+ */
+ bool boot;
#endif
Per_CPU_Stats Stats;
@@ -536,6 +542,19 @@ static inline bool _Per_CPU_Is_processor_online(
#endif
}
+static inline bool _Per_CPU_Is_boot_processor(
+ const Per_CPU_Control *cpu
+)
+{
+#if defined( RTEMS_SMP )
+ return cpu->boot;
+#else
+ (void) cpu;
+
+ return true;
+#endif
+}
+
#if defined( RTEMS_SMP )
static inline void _Per_CPU_Send_interrupt( const Per_CPU_Control *cpu )
diff --git a/cpukit/score/src/smp.c b/cpukit/score/src/smp.c
index 68a55ff..8049643 100644
--- a/cpukit/score/src/smp.c
+++ b/cpukit/score/src/smp.c
@@ -57,6 +57,8 @@ static void _SMP_Start_processors( uint32_t cpu_count )
} else {
started = true;
+ cpu->boot = true;
+
if ( !_Scheduler_Should_start_processor( assignment ) ) {
_SMP_Fatal( SMP_FATAL_BOOT_PROCESSOR_NOT_ASSIGNED_TO_SCHEDULER );
}
--
1.8.4.5
More information about the devel
mailing list