----- Gedare Bloom <ged...@rtems.org> schrieb: > On Fri, Nov 4, 2016 at 9:08 AM, Sebastian Huber > <sebastian.hu...@embedded-brains.de> wrote: > > --- > > cpukit/score/include/rtems/score/percpu.h | 2 +- > > testsuites/tmtests/tm26/task1.c | 12 +----------- > > testsuites/tmtests/tm27/task1.c | 15 +++++++++++---- > > 3 files changed, 13 insertions(+), 16 deletions(-) > > > > diff --git a/cpukit/score/include/rtems/score/percpu.h > > b/cpukit/score/include/rtems/score/percpu.h > > index 066bf4c..1ccbc3b 100644 > > --- a/cpukit/score/include/rtems/score/percpu.h > > +++ b/cpukit/score/include/rtems/score/percpu.h > > @@ -688,7 +688,7 @@ bool _Per_CPU_State_wait_for_non_initial_state( > > #define _Thread_Heir \ > > _Per_CPU_Get()->heir > > #define _Thread_Executing \ > > - _Per_CPU_Get()->executing > > + _Per_CPU_Get_executing( _Per_CPU_Get() ) > > #define _ISR_Nest_level \ > > _Per_CPU_Get()->isr_nest_level > > #define _CPU_Interrupt_stack_low \ > > diff --git a/testsuites/tmtests/tm26/task1.c > > b/testsuites/tmtests/tm26/task1.c > > index 173cf7f..9d157e9 100644 > > --- a/testsuites/tmtests/tm26/task1.c > > +++ b/testsuites/tmtests/tm26/task1.c > > @@ -123,17 +123,7 @@ static void set_thread_heir( Thread_Control *thread ) > > > > static void set_thread_executing( Thread_Control *thread ) > > { > > -#if defined( PREVENT_SMP_ASSERT_FAILURES ) > > - ISR_Level level; > > - > > - _ISR_Local_disable( level ); > > -#endif > > - > > - _Thread_Executing = thread; > > - > > -#if defined( PREVENT_SMP_ASSERT_FAILURES ) > > - _ISR_Local_enable( level ); > > -#endif > > + _Per_CPU_Get_snapshot()->executing = thread; > Normally one thinks of a snapshot as a read-only kind of thing, like a > picture. So I was a little confused by this terminology--for some > reason I hadn't noticed this _Per_CPU_Get_snapshot() before now.
Its good that you didn't notice this before, since it should be rarely used: /* * If we get the current processor index in a context which allows thread * dispatching, then we 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. */ #if defined( _CPU_Get_current_per_CPU_control ) #define _Per_CPU_Get_snapshot() _CPU_Get_current_per_CPU_control() #else #define _Per_CPU_Get_snapshot() \ ( &_Per_CPU_Information[ _SMP_Get_current_processor() ].per_cpu ) #endif -- 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. _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel