This and the previous patches in series seem ok.
On Fri, Jun 14, 2013 at 10:32 AM, Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > Use an event triggered unicast to inform remote processors about a > necessary thread dispatch instead. > --- > cpukit/score/include/rtems/score/smp.h | 8 -------- > cpukit/score/src/isrsmp.c | 3 --- > cpukit/score/src/schedulersimplesmp.c | 9 +++++++++ > cpukit/score/src/smp.c | 21 --------------------- > cpukit/score/src/threaddispatch.c | 5 ----- > 5 files changed, 9 insertions(+), 37 deletions(-) > > diff --git a/cpukit/score/include/rtems/score/smp.h > b/cpukit/score/include/rtems/score/smp.h > index fedf9ab..2c2b46a 100644 > --- a/cpukit/score/include/rtems/score/smp.h > +++ b/cpukit/score/include/rtems/score/smp.h > @@ -96,14 +96,6 @@ void _SMP_Broadcast_message( > void _SMP_Request_other_cores_to_perform_first_context_switch(void); > > /** > - * @brief Request dispatch on other cores. > - * > - * Send message to other cores requesting them to perform > - * a thread dispatch operation. > - */ > -void _SMP_Request_other_cores_to_dispatch(void); > - > -/** > * @brief Request other cores to shutdown. > * > * Send message to other cores requesting them to shutdown. > diff --git a/cpukit/score/src/isrsmp.c b/cpukit/score/src/isrsmp.c > index 9244287..d97c9c3 100644 > --- a/cpukit/score/src/isrsmp.c > +++ b/cpukit/score/src/isrsmp.c > @@ -96,8 +96,5 @@ int _ISR_SMP_Exit(void) > > _Thread_Dispatch_decrement_disable_level(); > > - if ( retval == 0 ) > - _SMP_Request_other_cores_to_dispatch(); > - > return retval; > } > diff --git a/cpukit/score/src/schedulersimplesmp.c > b/cpukit/score/src/schedulersimplesmp.c > index ec1b0e2..2329c1a 100644 > --- a/cpukit/score/src/schedulersimplesmp.c > +++ b/cpukit/score/src/schedulersimplesmp.c > @@ -56,9 +56,18 @@ static void _Scheduler_simple_smp_Allocate_processor( > } > > if ( heir != victim ) { > + Per_CPU_Control *cpu_of_executing = > + &_Per_CPU_Information[ _SMP_Get_current_processor() ]; > + > heir->cpu = cpu_of_victim; > cpu_of_victim->heir = heir; > cpu_of_victim->dispatch_necessary = true; > + > + if ( cpu_of_victim != cpu_of_executing ) { > + _CPU_SMP_Send_interrupt( > + cpu_of_victim - &_Per_CPU_Information[ 0 ] > + ); > + } > } > } > > diff --git a/cpukit/score/src/smp.c b/cpukit/score/src/smp.c > index 4d2a1b5..6cd4fdd 100644 > --- a/cpukit/score/src/smp.c > +++ b/cpukit/score/src/smp.c > @@ -162,27 +162,6 @@ void > _SMP_Request_other_cores_to_perform_first_context_switch( void ) > } > } > > -void _SMP_Request_other_cores_to_dispatch( void ) > -{ > - if ( _System_state_Is_up( _System_state_Get() ) ) { > - uint32_t self = _SMP_Get_current_processor(); > - uint32_t ncpus = _SMP_Get_processor_count(); > - uint32_t cpu; > - > - for ( cpu = 0 ; cpu < ncpus ; ++cpu ) { > - const Per_CPU_Control *per_cpu = &_Per_CPU_Information[ cpu ]; > - > - if ( > - cpu != self > - && per_cpu->state == PER_CPU_STATE_UP > - && per_cpu->dispatch_necessary > - ) { > - _SMP_Send_message( cpu, 0 ); > - } > - } > - } > -} > - > void _SMP_Request_other_cores_to_shutdown( void ) > { > uint32_t self = _SMP_Get_current_processor(); > diff --git a/cpukit/score/src/threaddispatch.c > b/cpukit/score/src/threaddispatch.c > index 7000220..9ef5618 100644 > --- a/cpukit/score/src/threaddispatch.c > +++ b/cpukit/score/src/threaddispatch.c > @@ -80,11 +80,6 @@ void _Thread_Dispatch( void ) > * once someone calls _Thread_Dispatch(). > */ > _Thread_Disable_dispatch(); > - > - /* > - * If necessary, send dispatch request to other cores. > - */ > - _SMP_Request_other_cores_to_dispatch(); > #endif > > /* > -- > 1.7.7 > > _______________________________________________ > rtems-devel mailing list > rtems-devel@rtems.org > http://www.rtems.org/mailman/listinfo/rtems-devel _______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel