[rtems commit] score: <rtems/score/smplockstats.h>

Sebastian Huber sebh at rtems.org
Mon Nov 26 11:31:35 UTC 2018


Module:    rtems
Branch:    master
Commit:    5fc727fe77a632f9df38161a8474007dab020608
Changeset: http://git.rtems.org/rtems/commit/?id=5fc727fe77a632f9df38161a8474007dab020608

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Nov 26 08:25:36 2018 +0100

score: <rtems/score/smplockstats.h>

Remove <rtems/score/chainimpl.h> include from
<rtems/score/smplockstats.h>.

Close #3598.

---

 cpukit/include/rtems/score/smplockstats.h | 34 +++++++++++++++----------------
 cpukit/score/src/profilingsmplock.c       | 23 ++++++++++++++-------
 2 files changed, 33 insertions(+), 24 deletions(-)

diff --git a/cpukit/include/rtems/score/smplockstats.h b/cpukit/include/rtems/score/smplockstats.h
index 4b30ce2..c434b15 100644
--- a/cpukit/include/rtems/score/smplockstats.h
+++ b/cpukit/include/rtems/score/smplockstats.h
@@ -7,7 +7,7 @@
  */
 
 /*
- * Copyright (c) 2013, 2016 embedded brains GmbH
+ * Copyright (c) 2013, 2018 embedded brains GmbH
  *
  * The license and distribution terms for this file may be
  * found in the file LICENSE in this distribution or at
@@ -17,15 +17,11 @@
 #ifndef _RTEMS_SCORE_SMPLOCKSTATS_H
 #define _RTEMS_SCORE_SMPLOCKSTATS_H
 
-#include <rtems/score/cpuopts.h>
+#include <rtems/score/cpu.h>
 
 #if defined(RTEMS_SMP)
 
-#if defined(RTEMS_PROFILING)
-#include <rtems/score/chainimpl.h>
-
-#include <stdint.h>
-#endif
+#include <rtems/score/chain.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -171,7 +167,10 @@ static inline void _SMP_lock_Stats_initialize(
  */
 void _SMP_lock_Stats_destroy( SMP_lock_Stats *stats );
 
-void _SMP_lock_Stats_register( SMP_lock_Stats *stats );
+void _SMP_lock_Stats_register_or_max_section_time(
+  SMP_lock_Stats    *stats,
+  CPU_Counter_ticks  max_section_time
+);
 
 typedef struct {
   CPU_Counter_ticks first;
@@ -223,19 +222,20 @@ static inline void _SMP_lock_Stats_release_update(
   const SMP_lock_Stats_context *stats_context
 )
 {
-  SMP_lock_Stats *stats = stats_context->stats;
-  CPU_Counter_ticks first = stats_context->acquire_instant;
-  CPU_Counter_ticks second = _CPU_Counter_read();
-  CPU_Counter_ticks delta = _CPU_Counter_difference( second, first );
+  SMP_lock_Stats    *stats;
+  CPU_Counter_ticks  first;
+  CPU_Counter_ticks  second;
+  CPU_Counter_ticks  delta;
+
+  stats = stats_context->stats;
+  first = stats_context->acquire_instant;
+  second = _CPU_Counter_read();
+  delta = _CPU_Counter_difference( second, first );
 
   stats->total_section_time += delta;
 
   if ( stats->max_section_time < delta ) {
-    stats->max_section_time = delta;
-
-    if ( _Chain_Is_node_off_chain( &stats->Node ) ) {
-      _SMP_lock_Stats_register( stats );
-    }
+    _SMP_lock_Stats_register_or_max_section_time( stats, delta );
   }
 }
 
diff --git a/cpukit/score/src/profilingsmplock.c b/cpukit/score/src/profilingsmplock.c
index 6d573a7..7040fa2 100644
--- a/cpukit/score/src/profilingsmplock.c
+++ b/cpukit/score/src/profilingsmplock.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2014, 2018 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
  *  Dornierstr. 4
@@ -17,6 +17,7 @@
 #endif
 
 #include <rtems/score/smplock.h>
+#include <rtems/score/chainimpl.h>
 
 #include <string.h>
 
@@ -81,14 +82,22 @@ void _SMP_lock_Stats_destroy( SMP_lock_Stats *stats )
   }
 }
 
-void _SMP_lock_Stats_register( SMP_lock_Stats *stats )
+void _SMP_lock_Stats_register_or_max_section_time(
+  SMP_lock_Stats    *stats,
+  CPU_Counter_ticks  max_section_time
+)
 {
-      SMP_lock_Stats_control *control = &_SMP_lock_Stats_control;
-      SMP_lock_Context lock_context;
+  stats->max_section_time = max_section_time;
+
+  if ( _Chain_Is_node_off_chain( &stats->Node ) ) {
+    SMP_lock_Stats_control *control;
+    SMP_lock_Context        lock_context;
 
-      _SMP_lock_ISR_disable_and_acquire( &control->Lock, &lock_context );
-      _Chain_Append_unprotected( &control->Stats_chain, &stats->Node );
-      _SMP_lock_Release_and_ISR_enable( &control->Lock, &lock_context );
+    control = &_SMP_lock_Stats_control;
+    _SMP_lock_ISR_disable_and_acquire( &control->Lock, &lock_context );
+    _Chain_Append_unprotected( &control->Stats_chain, &stats->Node );
+    _SMP_lock_Release_and_ISR_enable( &control->Lock, &lock_context );
+  }
 }
 
 void _SMP_lock_Stats_iteration_start(




More information about the vc mailing list