[PATCH 1/2] score: Add _Per_CPU_Get_snapshot()
Gedare Bloom
gedare at rtems.org
Fri Apr 11 17:29:36 UTC 2014
On Fri, Apr 11, 2014 at 11:15 AM, Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
> ---
> cpukit/score/include/rtems/score/percpu.h | 8 +++++---
> 1 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/cpukit/score/include/rtems/score/percpu.h b/cpukit/score/include/rtems/score/percpu.h
> index 75ff3e2..92a6e8a 100644
> --- a/cpukit/score/include/rtems/score/percpu.h
> +++ b/cpukit/score/include/rtems/score/percpu.h
> @@ -424,11 +424,13 @@ extern Per_CPU_Control_envelope _Per_CPU_Information[] CPU_STRUCTURE_ALIGNMENT;
> _ISR_Enable( isr_cookie )
> #endif
>
> +#define _Per_CPU_Get_snapshot() \
> + ( &_Per_CPU_Information[ _SMP_Get_current_processor() ].per_cpu )
> +
I think of a snapshot as a copy of some data that might change in the
future. Since this gets the reference without making even a
shallow-copy, I don't know what is being "snapshotted" or what
guarantees if any are made about the snapshot.
> #if defined( RTEMS_SMP )
> static inline Per_CPU_Control *_Per_CPU_Get( void )
> {
> - Per_CPU_Control *per_cpu =
> - &_Per_CPU_Information[ _SMP_Get_current_processor() ].per_cpu;
> + Per_CPU_Control *per_cpu = _Per_CPU_Get_snapshot();
>
> _Assert(
> per_cpu->thread_dispatch_disable_level != 0 || _ISR_Get_level() != 0
> @@ -437,7 +439,7 @@ static inline Per_CPU_Control *_Per_CPU_Get( void )
> return per_cpu;
> }
> #else
> -#define _Per_CPU_Get() ( &_Per_CPU_Information[ 0 ].per_cpu )
> +#define _Per_CPU_Get() _Per_CPU_Get_snapshot()
> #endif
>
> static inline Per_CPU_Control *_Per_CPU_Get_by_index( uint32_t index )
> --
> 1.7.7
>
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel
More information about the devel
mailing list