[PATCH 1/2] score: Add _Per_CPU_Get_snapshot()

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Apr 11 18:00:20 UTC 2014


On 04/11/2014 07:29 PM, Gedare Bloom wrote:
> 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 you read the processor index of the current processor in a context 
which allows thread dispatching, then you may already run on another 
processor right after the read instruction.  There are very few cases in 
which this makes sense (here we can use _Per_CPU_Get_snapshot()).  All 
other places must use _Per_CPU_Get() so that we can add checks for 
RTEMS_DEBUG.

Do you have a better name?  I will add the comment above to the source code.

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.




More information about the devel mailing list