diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-03-03 13:45:50 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-03-04 08:43:45 +0100 |
commit | 8b73ee50238d5f22db792bf8cc573a001f52065f (patch) | |
tree | c2522f35266d86ca51c74daae66bab4f09c7bae0 | |
parent | fdeaa64e1786e7f18814d8c7eae219332d672c27 (diff) |
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.
-rw-r--r-- | cpukit/Makefile.am | 2 | ||||
-rw-r--r-- | cpukit/include/rtems/rtems/tasks.h | 5 | ||||
-rw-r--r-- | cpukit/rtems/src/getcurrentprocessor.c | 25 | ||||
-rw-r--r-- | cpukit/rtems/src/getprocessorcount.c | 25 |
4 files changed, 3 insertions, 54 deletions
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@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@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(); -} |