[PATCH 7/7] score: Hide SMP lock profiling impl if disabled

Chris Johns chrisj at rtems.org
Thu Jun 25 23:45:48 UTC 2015


On 25/06/2015 11:17 pm, Sebastian Huber wrote:
> The problem is that empty structures have a different size in C and C++.
> ---
>  cpukit/score/include/rtems/score/percpu.h  |  17 ++-
>  cpukit/score/include/rtems/score/smplock.h | 167 +++++++++++++++++------------
>  cpukit/score/src/profilingsmplock.c        |  18 ++--
>  cpukit/score/src/smp.c                     |   5 +-
>  4 files changed, 127 insertions(+), 80 deletions(-)
> 
> diff --git a/cpukit/score/include/rtems/score/percpu.h b/cpukit/score/include/rtems/score/percpu.h
> index a6f7a25..088c31f 100644
> --- a/cpukit/score/include/rtems/score/percpu.h
> +++ b/cpukit/score/include/rtems/score/percpu.h
> @@ -319,10 +319,17 @@ typedef struct Per_CPU_Control {
>       */
>      SMP_ticket_lock_Control Lock;
>  
> -    /**
> -     * @brief Lock statistics context for the per-CPU lock.
> -     */
> -    SMP_lock_Stats_context Lock_stats_context;
> +    #if defined( RTEMS_PROFILING )
> +      /**
> +       * @brief Lock statistics for the per-CPU lock.
> +       */
> +      SMP_lock_Stats Lock_stats;
> +
> +      /**
> +       * @brief Lock statistics context for the per-CPU lock.
> +       */
> +      SMP_lock_Stats_context Lock_stats_context;
> +    #endif
>  

My only comment is the ability to get any SMP status is difficult. It is
either all on or you get nothing. Moving all stats related defines
inside #ifdefs and into the global RTEMS_PROFILING define make this
harder to do. This is not specifically addressing this lock stats change
but on a more general level and this change reminded me.

I looked into adding some SMP stats to top not long ago I found there
was nothing I report on unless profiling was on and if I turned on
profiling I got too much such as timing and other nice features.

I could not see how to show how many context switches each core had, how
many interrupts each core serviced.

I understand the desire to push the limits and not waste a single cycle
if we can help it but I actually found it difficult to know if I had SMP
built correctly and if it was working from a shell command line. I feel
we need some standard stats users can depend on that help us know things
are basically working.

Chris


More information about the devel mailing list