[PATCH 2/2] rtems: Rename rtems_smp_get_current_processor()

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Apr 10 09:06:39 UTC 2014


Rename rtems_smp_get_current_processor() in
rtems_get_current_processor().  Make rtems_get_current_processor() a
function in uni-processor configurations to enable ABI compatibility
with SMP configurations.
---
 .../libbsp/arm/altera-cyclone-v/startup/bspreset.c |    2 +-
 c/src/lib/libbsp/sparc/leon3/startup/bspreset.c    |    2 +-
 cpukit/rtems/Makefile.am                           |    1 +
 cpukit/rtems/include/rtems/rtems/smp.h             |   10 +++----
 cpukit/rtems/src/getcurrentprocessor.c             |   25 ++++++++++++++++++++
 cpukit/sapi/src/testextension.c                    |    2 +-
 testsuites/smptests/smp01/init.c                   |    2 +-
 testsuites/smptests/smp01/tasks.c                  |    2 +-
 testsuites/smptests/smp02/init.c                   |    2 +-
 testsuites/smptests/smp02/tasks.c                  |    2 +-
 testsuites/smptests/smp03/init.c                   |    2 +-
 testsuites/smptests/smp05/init.c                   |    4 +-
 testsuites/smptests/smp07/init.c                   |    4 +-
 testsuites/smptests/smp08/init.c                   |    2 +-
 testsuites/smptests/smp08/tasks.c                  |    2 +-
 testsuites/smptests/smp09/init.c                   |    2 +-
 testsuites/smptests/smpfatal01/init.c              |    4 +-
 testsuites/smptests/smpfatal02/init.c              |    4 +-
 testsuites/smptests/smpfatal03/init.c              |    4 +-
 testsuites/smptests/smplock01/init.c               |    4 +-
 testsuites/smptests/smpmigration01/init.c          |    2 +-
 testsuites/smptests/smppsxsignal01/init.c          |    8 +++---
 testsuites/smptests/smpscheduler02/init.c          |    4 +-
 testsuites/smptests/smpsignal01/init.c             |    8 +++---
 24 files changed, 64 insertions(+), 40 deletions(-)
 create mode 100644 cpukit/rtems/src/getcurrentprocessor.c

diff --git a/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspreset.c b/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspreset.c
index 9cf21a9..3b7f10a 100644
--- a/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspreset.c
+++ b/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspreset.c
@@ -19,7 +19,7 @@
 
 void bsp_reset(void)
 {
-  uint32_t           self_cpu  = rtems_smp_get_current_processor();
+  uint32_t           self_cpu  = rtems_get_current_processor();
   volatile uint32_t *mpumodrst = ALT_RSTMGR_MPUMODRST_ADDR;
   
   if( self_cpu == 0 ) {
diff --git a/c/src/lib/libbsp/sparc/leon3/startup/bspreset.c b/c/src/lib/libbsp/sparc/leon3/startup/bspreset.c
index c3c9e98..c642a75 100644
--- a/c/src/lib/libbsp/sparc/leon3/startup/bspreset.c
+++ b/c/src/lib/libbsp/sparc/leon3/startup/bspreset.c
@@ -20,7 +20,7 @@
 
 void bsp_reset(void)
 {
-  uint32_t self_cpu = rtems_smp_get_current_processor();
+  uint32_t self_cpu = rtems_get_current_processor();
 
   if (self_cpu == 0) {
     volatile struct irqmp_regs *irqmp = LEON3_IrqCtrl_Regs;
diff --git a/cpukit/rtems/Makefile.am b/cpukit/rtems/Makefile.am
index fc2a0e1..7a0bfe4 100644
--- a/cpukit/rtems/Makefile.am
+++ b/cpukit/rtems/Makefile.am
@@ -266,6 +266,7 @@ librtems_a_SOURCES += src/modes.c
 librtems_a_SOURCES += src/status.c
 librtems_a_SOURCES += src/statustext.c
 
+librtems_a_SOURCES += src/getcurrentprocessor.c
 librtems_a_SOURCES += src/getprocessorcount.c
 
 if HAS_MP
diff --git a/cpukit/rtems/include/rtems/rtems/smp.h b/cpukit/rtems/include/rtems/rtems/smp.h
index b327514..fa4d5d6 100644
--- a/cpukit/rtems/include/rtems/rtems/smp.h
+++ b/cpukit/rtems/include/rtems/rtems/smp.h
@@ -18,12 +18,12 @@
 #ifndef _RTEMS_RTEMS_SMP_H
 #define _RTEMS_RTEMS_SMP_H
 
+#include <stdint.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#include <rtems/score/smp.h>
-
 /**
  * @defgroup ClassicSMP SMP Services
  *
@@ -55,8 +55,7 @@ uint32_t rtems_get_processor_count(void);
 /**
  * @brief Returns the index of the current processor.
  *
- * On uni-processor configurations this is a compile time constant and defined
- * to be zero.
+ * On uni-processor configurations a value of zero will be returned.
  *
  * On SMP configurations an architecture specific method is used to obtain the
  * index of the current processor in the system.  The set of processor indices
@@ -70,8 +69,7 @@ uint32_t rtems_get_processor_count(void);
  *
  * @return The index of the current processor.
  */
-#define rtems_smp_get_current_processor() \
-  _SMP_Get_current_processor()
+uint32_t rtems_get_current_processor(void);
 
 /** @} */
 
diff --git a/cpukit/rtems/src/getcurrentprocessor.c b/cpukit/rtems/src/getcurrentprocessor.c
new file mode 100644
index 0000000..5fc48b9
--- /dev/null
+++ b/cpukit/rtems/src/getcurrentprocessor.c
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2014 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Dornierstr. 4
+ *  82178 Puchheim
+ *  Germany
+ *  <rtems at embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#if HAVE_CONFIG_H
+  #include "config.h"
+#endif
+
+#include <rtems/rtems/smp.h>
+#include <rtems/score/smp.h>
+
+uint32_t rtems_get_current_processor(void)
+{
+  return _SMP_Get_current_processor();
+}
diff --git a/cpukit/sapi/src/testextension.c b/cpukit/sapi/src/testextension.c
index 76ac1e0..e21872a 100644
--- a/cpukit/sapi/src/testextension.c
+++ b/cpukit/sapi/src/testextension.c
@@ -29,7 +29,7 @@ void rtems_test_fatal_extension(
   (void) is_internal;
   (void) code;
 
-  if (rtems_smp_get_current_processor() == 0) {
+  if (rtems_get_current_processor() == 0) {
     rtems_profiling_report_xml(
       rtems_test_name,
       printk_plugin,
diff --git a/testsuites/smptests/smp01/init.c b/testsuites/smptests/smp01/init.c
index 8439293..c77a192 100644
--- a/testsuites/smptests/smp01/init.c
+++ b/testsuites/smptests/smp01/init.c
@@ -35,7 +35,7 @@ rtems_task Init(
   rtems_status_code  status;
   bool               allDone;
 
-  cpu_self = rtems_smp_get_current_processor();
+  cpu_self = rtems_get_current_processor();
 
   /* XXX - Delay a bit to allow debug messages from
    * startup to print.  This may need to go away when
diff --git a/testsuites/smptests/smp01/tasks.c b/testsuites/smptests/smp01/tasks.c
index 12a7418..b8c766f 100644
--- a/testsuites/smptests/smp01/tasks.c
+++ b/testsuites/smptests/smp01/tasks.c
@@ -28,7 +28,7 @@ rtems_task Test_task(
   rtems_test_assert( p != NULL );
 
    /* Get the CPU Number */
-  cpu_num = rtems_smp_get_current_processor();
+  cpu_num = rtems_get_current_processor();
 
   /* Print that the task is up and running. */
   Loop();
diff --git a/testsuites/smptests/smp02/init.c b/testsuites/smptests/smp02/init.c
index 05f6351..e70eca3 100644
--- a/testsuites/smptests/smp02/init.c
+++ b/testsuites/smptests/smp02/init.c
@@ -73,7 +73,7 @@ rtems_task Init(
       &id
     );
 
-    cpu_num = rtems_smp_get_current_processor();
+    cpu_num = rtems_get_current_processor();
     locked_printf(" CPU %" PRIu32 " start task TA%c\n", cpu_num, ch);
     status = rtems_task_start( id, Test_task, i+1 );
     directive_failed( status, str );
diff --git a/testsuites/smptests/smp02/tasks.c b/testsuites/smptests/smp02/tasks.c
index 595954e..26ca851 100644
--- a/testsuites/smptests/smp02/tasks.c
+++ b/testsuites/smptests/smp02/tasks.c
@@ -40,7 +40,7 @@ rtems_task Test_task(
   uint32_t          cpu_num;
   rtems_status_code sc;
 
-  cpu_num = rtems_smp_get_current_processor();
+  cpu_num = rtems_get_current_processor();
 
   do {
 
diff --git a/testsuites/smptests/smp03/init.c b/testsuites/smptests/smp03/init.c
index 3acdfe9..4b443d0 100644
--- a/testsuites/smptests/smp03/init.c
+++ b/testsuites/smptests/smp03/init.c
@@ -37,7 +37,7 @@ void PrintTaskInfo(
 {
   uint32_t cpu_num;
 
-  cpu_num = rtems_smp_get_current_processor();
+  cpu_num = rtems_get_current_processor();
 
   locked_printf("  CPU %" PRIu32 " running task %s\n", cpu_num, task_name );
 }
diff --git a/testsuites/smptests/smp05/init.c b/testsuites/smptests/smp05/init.c
index cf7ea3a..33d958f 100644
--- a/testsuites/smptests/smp05/init.c
+++ b/testsuites/smptests/smp05/init.c
@@ -26,7 +26,7 @@ rtems_task Test_task(
   rtems_task_argument argument
 )
 {
-  locked_printf( "Shut down from CPU %" PRIu32 "\n", rtems_smp_get_current_processor() );
+  locked_printf( "Shut down from CPU %" PRIu32 "\n", rtems_get_current_processor() );
   success();
 }
 
@@ -61,7 +61,7 @@ rtems_task Init(
     );
     directive_failed( status, "task create" );
 
-    cpu_num = rtems_smp_get_current_processor();
+    cpu_num = rtems_get_current_processor();
     locked_printf(" CPU %" PRIu32 " start task TA%c\n", cpu_num, ch);
 
     status = rtems_task_start( id, Test_task, i+1 );
diff --git a/testsuites/smptests/smp07/init.c b/testsuites/smptests/smp07/init.c
index 53993ce..7e3f6f5 100644
--- a/testsuites/smptests/smp07/init.c
+++ b/testsuites/smptests/smp07/init.c
@@ -40,7 +40,7 @@ rtems_task Test_task(
   rtems_test_assert( p != NULL );
 
    /* Get the CPU Number */
-  cpu_num = rtems_smp_get_current_processor();
+  cpu_num = rtems_get_current_processor();
 
   /* Print that the task is up and running. */
   locked_printf(" CPU %" PRIu32 " runnng Task %s and blocking\n", cpu_num, name);
@@ -124,7 +124,7 @@ rtems_task Init(
   );
   directive_failed( status, "task create" );
 
-  cpu_num = rtems_smp_get_current_processor();
+  cpu_num = rtems_get_current_processor();
   locked_printf(" CPU %d start task TA1\n", cpu_num );
   status = rtems_task_start( id, Test_task, 1 );
   directive_failed( status, "task start" );
diff --git a/testsuites/smptests/smp08/init.c b/testsuites/smptests/smp08/init.c
index dc4c789..29ba747 100644
--- a/testsuites/smptests/smp08/init.c
+++ b/testsuites/smptests/smp08/init.c
@@ -23,7 +23,7 @@ void PrintTaskInfo(
 {
   uint32_t cpu_num;
 
-  cpu_num = rtems_smp_get_current_processor();
+  cpu_num = rtems_get_current_processor();
 
   /* Print the cpu number and task name */
   locked_printf(
diff --git a/testsuites/smptests/smp08/tasks.c b/testsuites/smptests/smp08/tasks.c
index d9ddb32..deda4bf 100644
--- a/testsuites/smptests/smp08/tasks.c
+++ b/testsuites/smptests/smp08/tasks.c
@@ -34,7 +34,7 @@ rtems_task Test_task(
   for ( ; ; ) {
 
     /* Get the CPU Number */
-    cpu_num = rtems_smp_get_current_processor();
+    cpu_num = rtems_get_current_processor();
 
     status = rtems_clock_get_tod( &time );
     if ( time.second >= 35 ) {
diff --git a/testsuites/smptests/smp09/init.c b/testsuites/smptests/smp09/init.c
index 09e9c09..8cf019c 100644
--- a/testsuites/smptests/smp09/init.c
+++ b/testsuites/smptests/smp09/init.c
@@ -58,7 +58,7 @@ rtems_task Init(
     );
     directive_failed( status, "task create" );
 
-    cpu_num = rtems_smp_get_current_processor();
+    cpu_num = rtems_get_current_processor();
     locked_printf(" CPU %" PRIu32 " start task TA%c\n", cpu_num, ch);
 
     status = rtems_task_start( id, Test_task, i+1 );
diff --git a/testsuites/smptests/smpfatal01/init.c b/testsuites/smptests/smpfatal01/init.c
index 178148b..5ef9ffe 100644
--- a/testsuites/smptests/smpfatal01/init.c
+++ b/testsuites/smptests/smpfatal01/init.c
@@ -42,7 +42,7 @@ static void fatal_extension(
 )
 {
   if (source == RTEMS_FATAL_SOURCE_SMP) {
-    uint32_t self = rtems_smp_get_current_processor();
+    uint32_t self = rtems_get_current_processor();
 
     assert(!is_internal);
     assert(code == SMP_FATAL_SHUTDOWN);
@@ -68,7 +68,7 @@ static rtems_status_code test_driver_init(
   void *arg
 )
 {
-  uint32_t self = rtems_smp_get_current_processor();
+  uint32_t self = rtems_get_current_processor();
   uint32_t cpu_count = rtems_get_processor_count();
   uint32_t cpu;
 
diff --git a/testsuites/smptests/smpfatal02/init.c b/testsuites/smptests/smpfatal02/init.c
index fb42e5d..266251f 100644
--- a/testsuites/smptests/smpfatal02/init.c
+++ b/testsuites/smptests/smpfatal02/init.c
@@ -45,7 +45,7 @@ static void fatal_extension(
     source == RTEMS_FATAL_SOURCE_APPLICATION
       || source == RTEMS_FATAL_SOURCE_SMP
   ) {
-    uint32_t self = rtems_smp_get_current_processor();
+    uint32_t self = rtems_get_current_processor();
 
     assert(!is_internal);
 
@@ -76,7 +76,7 @@ static rtems_status_code test_driver_init(
   void *arg
 )
 {
-  uint32_t self = rtems_smp_get_current_processor();
+  uint32_t self = rtems_get_current_processor();
   uint32_t cpu_count = rtems_get_processor_count();
   uint32_t cpu;
 
diff --git a/testsuites/smptests/smpfatal03/init.c b/testsuites/smptests/smpfatal03/init.c
index 13a9db5..2ef17f0 100644
--- a/testsuites/smptests/smpfatal03/init.c
+++ b/testsuites/smptests/smpfatal03/init.c
@@ -67,7 +67,7 @@ static void wait_for_giant(void)
 
 static void Init(rtems_task_argument arg)
 {
-  uint32_t self = rtems_smp_get_current_processor();
+  uint32_t self = rtems_get_current_processor();
   uint32_t cpu_count = rtems_get_processor_count();
 
   rtems_test_begink();
@@ -108,7 +108,7 @@ static void fatal_extension(
     source == RTEMS_FATAL_SOURCE_APPLICATION
       || source == RTEMS_FATAL_SOURCE_SMP
   ) {
-    uint32_t self = rtems_smp_get_current_processor();
+    uint32_t self = rtems_get_current_processor();
     SMP_barrier_State state = SMP_BARRIER_STATE_INITIALIZER;
 
     assert(!is_internal);
diff --git a/testsuites/smptests/smplock01/init.c b/testsuites/smptests/smplock01/init.c
index 85995e8..8cc10fa 100644
--- a/testsuites/smptests/smplock01/init.c
+++ b/testsuites/smptests/smplock01/init.c
@@ -260,7 +260,7 @@ static void task(rtems_task_argument arg)
 {
   global_context *ctx = (global_context *) arg;
   uint32_t cpu_count = rtems_get_processor_count();
-  uint32_t cpu_self = rtems_smp_get_current_processor();
+  uint32_t cpu_self = rtems_get_current_processor();
   rtems_status_code sc;
   SMP_barrier_State bs = SMP_BARRIER_STATE_INITIALIZER;
 
@@ -274,7 +274,7 @@ static void test(void)
 {
   global_context *ctx = &context;
   uint32_t cpu_count = rtems_get_processor_count();
-  uint32_t cpu_self = rtems_smp_get_current_processor();
+  uint32_t cpu_self = rtems_get_current_processor();
   uint32_t cpu;
   int test;
   rtems_status_code sc;
diff --git a/testsuites/smptests/smpmigration01/init.c b/testsuites/smptests/smpmigration01/init.c
index fe321c8..78d671d 100644
--- a/testsuites/smptests/smpmigration01/init.c
+++ b/testsuites/smptests/smpmigration01/init.c
@@ -73,7 +73,7 @@ static void runner(rtems_task_argument self)
   test_counters *next_counters = &ctx->counters[next];
 
   while (true) {
-    uint32_t current_cpu = rtems_smp_get_current_processor();
+    uint32_t current_cpu = rtems_get_current_processor();
 
     ++counters->cycles_per_cpu[current_cpu].counter;
 
diff --git a/testsuites/smptests/smppsxsignal01/init.c b/testsuites/smptests/smppsxsignal01/init.c
index 61eaec1..b954cbd 100644
--- a/testsuites/smptests/smppsxsignal01/init.c
+++ b/testsuites/smptests/smppsxsignal01/init.c
@@ -82,14 +82,14 @@ static void signal_send(test_context *ctx, test_state new_state)
 static void check_consumer_processor(const test_context *ctx)
 {
   rtems_test_assert(
-    ctx->consumer_processor == rtems_smp_get_current_processor()
+    ctx->consumer_processor == rtems_get_current_processor()
   );
 }
 
 static void check_producer_processor(const test_context *ctx)
 {
   rtems_test_assert(
-    ctx->producer_processor == rtems_smp_get_current_processor()
+    ctx->producer_processor == rtems_get_current_processor()
   );
 }
 
@@ -97,7 +97,7 @@ static void *producer(void *arg)
 {
   test_context *ctx = arg;
 
-  ctx->producer_processor = rtems_smp_get_current_processor();
+  ctx->producer_processor = rtems_get_current_processor();
 
   rtems_test_assert(ctx->consumer_processor != ctx->producer_processor);
 
@@ -120,7 +120,7 @@ static void test(void)
   void *producer_status;
 
   ctx->consumer = pthread_self();
-  ctx->consumer_processor = rtems_smp_get_current_processor();
+  ctx->consumer_processor = rtems_get_current_processor();
 
   memset(&new_action, 0, sizeof(new_action));
   new_action.sa_handler = signal_handler;
diff --git a/testsuites/smptests/smpscheduler02/init.c b/testsuites/smptests/smpscheduler02/init.c
index e627314..d979ffe 100644
--- a/testsuites/smptests/smpscheduler02/init.c
+++ b/testsuites/smptests/smpscheduler02/init.c
@@ -33,7 +33,7 @@ static void task(rtems_task_argument arg)
 
   (void) arg;
 
-  rtems_test_assert(rtems_smp_get_current_processor() == 1);
+  rtems_test_assert(rtems_get_current_processor() == 1);
 
   sc = rtems_event_transient_send(main_task_id);
   rtems_test_assert(sc == RTEMS_SUCCESSFUL);
@@ -51,7 +51,7 @@ static void test(void)
 
   main_task_id = rtems_task_self();
 
-  rtems_test_assert(rtems_smp_get_current_processor() == 0);
+  rtems_test_assert(rtems_get_current_processor() == 0);
 
   sc = rtems_scheduler_ident_by_index(1, &scheduler_id);
   rtems_test_assert(sc == RTEMS_SUCCESSFUL);
diff --git a/testsuites/smptests/smpsignal01/init.c b/testsuites/smptests/smpsignal01/init.c
index 1aaa700..af524bf 100644
--- a/testsuites/smptests/smpsignal01/init.c
+++ b/testsuites/smptests/smpsignal01/init.c
@@ -86,14 +86,14 @@ static void signal_send(test_context *ctx, test_state new_state)
 static void check_consumer_processor(const test_context *ctx)
 {
   rtems_test_assert(
-    ctx->consumer_processor == rtems_smp_get_current_processor()
+    ctx->consumer_processor == rtems_get_current_processor()
   );
 }
 
 static void check_producer_processor(const test_context *ctx)
 {
   rtems_test_assert(
-    ctx->producer_processor == rtems_smp_get_current_processor()
+    ctx->producer_processor == rtems_get_current_processor()
   );
 }
 
@@ -101,7 +101,7 @@ static void producer(rtems_task_argument arg)
 {
   test_context *ctx = (test_context *) arg;
 
-  ctx->producer_processor = rtems_smp_get_current_processor();
+  ctx->producer_processor = rtems_get_current_processor();
 
   rtems_test_assert(ctx->consumer_processor != ctx->producer_processor);
 
@@ -126,7 +126,7 @@ static void test(void)
   rtems_mode mode;
 
   ctx->consumer = rtems_task_self();
-  ctx->consumer_processor = rtems_smp_get_current_processor();
+  ctx->consumer_processor = rtems_get_current_processor();
 
   sc = rtems_signal_catch(signal_handler, RTEMS_DEFAULT_MODES);
   rtems_test_assert(sc == RTEMS_SUCCESSFUL);
-- 
1.7.7




More information about the devel mailing list