[PATCH] rtems: rtems_scheduler_get_processor_maximum()

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Mar 3 13:05:55 UTC 2020


In uniprocessor configurations, use compile-time constants for
rtems_scheduler_get_processor_maximum() and
rtems_scheduler_get_processor().  This helps compilers and static
analyzers to deduce that some loops bodies are only executed once and
some conditional statements have a fixed outcome.

In SMP configurations, directly provide the internal implementation for
performance reasons.
---
 cpukit/Makefile.am                     |  2 --
 cpukit/include/rtems/rtems/tasks.h     |  5 +++--
 cpukit/rtems/src/getcurrentprocessor.c | 25 -------------------------
 cpukit/rtems/src/getprocessorcount.c   | 25 -------------------------
 4 files changed, 3 insertions(+), 54 deletions(-)
 delete mode 100644 cpukit/rtems/src/getcurrentprocessor.c
 delete mode 100644 cpukit/rtems/src/getprocessorcount.c

diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
index 298580e20d..783a9bbf42 100644
--- a/cpukit/Makefile.am
+++ b/cpukit/Makefile.am
@@ -700,8 +700,6 @@ librtemscpu_a_SOURCES += rtems/src/eventseize.c
 librtemscpu_a_SOURCES += rtems/src/eventsend.c
 librtemscpu_a_SOURCES += rtems/src/eventsurrender.c
 librtemscpu_a_SOURCES += rtems/src/getapiconfig.c
-librtemscpu_a_SOURCES += rtems/src/getcurrentprocessor.c
-librtemscpu_a_SOURCES += rtems/src/getprocessorcount.c
 librtemscpu_a_SOURCES += rtems/src/intrbody.c
 librtemscpu_a_SOURCES += rtems/src/intrcatch.c
 librtemscpu_a_SOURCES += rtems/src/modes.c
diff --git a/cpukit/include/rtems/rtems/tasks.h b/cpukit/include/rtems/rtems/tasks.h
index 3519bbf795..a4af236b6b 100644
--- a/cpukit/include/rtems/rtems/tasks.h
+++ b/cpukit/include/rtems/rtems/tasks.h
@@ -21,6 +21,7 @@
 #include <rtems/rtems/attr.h>
 #include <rtems/rtems/status.h>
 #include <rtems/rtems/types.h>
+#include <rtems/score/smp.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -600,7 +601,7 @@ rtems_status_code rtems_scheduler_ident_by_processor_set(
  *
  * @return The index of the current processor.
  */
-uint32_t rtems_scheduler_get_processor( void );
+#define rtems_scheduler_get_processor() _SMP_Get_current_processor()
 
 /**
  * @brief Returns the index of the current processor.
@@ -633,7 +634,7 @@ rtems_get_current_processor( void )
  *
  * @see rtems_scheduler_add_processor() and rtems_scheduler_remove_processor().
  */
-RTEMS_CONST uint32_t rtems_scheduler_get_processor_maximum( void );
+#define rtems_scheduler_get_processor_maximum() _SMP_Get_processor_maximum()
 
 /**
  * @brief Returns the processor maximum supported by the system.
diff --git a/cpukit/rtems/src/getcurrentprocessor.c b/cpukit/rtems/src/getcurrentprocessor.c
deleted file mode 100644
index 10811ade66..0000000000
--- a/cpukit/rtems/src/getcurrentprocessor.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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/tasks.h>
-#include <rtems/score/smp.h>
-
-uint32_t rtems_scheduler_get_processor(void)
-{
-  return _SMP_Get_current_processor();
-}
diff --git a/cpukit/rtems/src/getprocessorcount.c b/cpukit/rtems/src/getprocessorcount.c
deleted file mode 100644
index 68de749225..0000000000
--- a/cpukit/rtems/src/getprocessorcount.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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/tasks.h>
-#include <rtems/score/smp.h>
-
-uint32_t rtems_scheduler_get_processor_maximum(void)
-{
-  return _SMP_Get_processor_maximum();
-}
-- 
2.16.4



More information about the devel mailing list