From 8b73ee50238d5f22db792bf8cc573a001f52065f Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 3 Mar 2020 13:45:50 +0100 Subject: rtems: rtems_scheduler_get_processor_maximum() 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 loop bodies are only executed once and some conditional statements have a fixed outcome (may improve code generation and reduce false positives). 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 #include #include +#include #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 - * - * - * 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 -#include - -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 - * - * - * 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 -#include - -uint32_t rtems_scheduler_get_processor_maximum(void) -{ - return _SMP_Get_processor_maximum(); -} -- cgit v1.2.3