summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-12-10 15:30:41 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-02-03 10:00:56 +0100
commit190169fee2f267f5e32813eb6fd3e9b51430effc (patch)
treee9cbaec67b5d37bba38a1336d68cdd76d784bc0e /cpukit
parentOptional POSIX Spinlock initialization (diff)
downloadrtems-190169fee2f267f5e32813eb6fd3e9b51430effc.tar.bz2
Optional CPU Set Handler initialization
Update #2408.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/sapi/src/exinit.c3
-rw-r--r--cpukit/score/include/rtems/score/cpusetimpl.h12
-rw-r--r--cpukit/score/include/rtems/sysinit.h1
-rw-r--r--cpukit/score/src/cpuset.c9
4 files changed, 9 insertions, 16 deletions
diff --git a/cpukit/sapi/src/exinit.c b/cpukit/sapi/src/exinit.c
index dd5e2c90a0..edd8a5c55f 100644
--- a/cpukit/sapi/src/exinit.c
+++ b/cpukit/sapi/src/exinit.c
@@ -37,7 +37,6 @@
#include <rtems/score/apiext.h>
#include <rtems/score/apimutex.h>
#include <rtems/score/copyrt.h>
-#include <rtems/score/cpusetimpl.h>
#include <rtems/score/heap.h>
#include <rtems/score/interr.h>
#include <rtems/score/isr.h>
@@ -130,8 +129,6 @@ static void rtems_initialize_data_structures(void)
_SMP_Handler_initialize();
- _CPU_set_Handler_initialization();
-
/* MANAGERS */
_POSIX_API_Initialize();
diff --git a/cpukit/score/include/rtems/score/cpusetimpl.h b/cpukit/score/include/rtems/score/cpusetimpl.h
index 226c3a1806..f9a0f0fdfa 100644
--- a/cpukit/score/include/rtems/score/cpusetimpl.h
+++ b/cpukit/score/include/rtems/score/cpusetimpl.h
@@ -123,18 +123,6 @@ static inline void _CPU_set_Set(
}
#endif
-/**
- * @brief Initialize the CPU Set Handler
- *
- * This routine validates a cpuset sets at least one valid cpu and that
- * it does not set any invalid cpus.
- */
-#if __RTEMS_HAVE_SYS_CPUSET_H__ && defined( RTEMS_SMP )
-void _CPU_set_Handler_initialization(void);
-#else
-#define _CPU_set_Handler_initialization() do { } while ( 0 )
-#endif
-
/**@}*/
#ifdef __cplusplus
diff --git a/cpukit/score/include/rtems/sysinit.h b/cpukit/score/include/rtems/sysinit.h
index 8f187648b4..39e551f416 100644
--- a/cpukit/score/include/rtems/sysinit.h
+++ b/cpukit/score/include/rtems/sysinit.h
@@ -30,6 +30,7 @@ extern "C" {
#define RTEMS_SYSINIT_BSP_START 000200
#define RTEMS_SYSINIT_INITIAL_EXTENSIONS 000300
#define RTEMS_SYSINIT_DATA_STRUCTURES 000301
+#define RTEMS_SYSINIT_CPU_SET 00030d
#define RTEMS_SYSINIT_USER_EXTENSIONS 000320
#define RTEMS_SYSINIT_CLASSIC_TASKS 000340
#define RTEMS_SYSINIT_CLASSIC_TIMER 000341
diff --git a/cpukit/score/src/cpuset.c b/cpukit/score/src/cpuset.c
index ca355c9681..deb9e436f3 100644
--- a/cpukit/score/src/cpuset.c
+++ b/cpukit/score/src/cpuset.c
@@ -21,6 +21,7 @@
#ifdef __RTEMS_HAVE_SYS_CPUSET_H__
#include <sys/cpuset.h>
+#include <rtems/sysinit.h>
#include <rtems/score/cpusetimpl.h>
#include <rtems/score/assert.h>
#include <rtems/score/percpu.h>
@@ -30,7 +31,7 @@ static CPU_set_Control cpuset_default;
/*
* _CPU_set_Handler_initialization
*/
-void _CPU_set_Handler_initialization()
+static void _CPU_set_Handler_initialization()
{
uint32_t cpu_count;
uint32_t cpu_index;
@@ -50,6 +51,12 @@ void _CPU_set_Handler_initialization()
CPU_SET_S( (int) cpu_index, cpuset_default.setsize, cpuset_default.set );
}
+RTEMS_SYSINIT_ITEM(
+ _CPU_set_Handler_initialization,
+ RTEMS_SYSINIT_CPU_SET,
+ RTEMS_SYSINIT_ORDER_MIDDLE
+);
+
/**
* _CPU_set_Is_valid
*