[PATCH 6/6] smp: Delete _SMP_Request_other_cores_to_dispatch()

Gedare Bloom gedare at rtems.org
Fri Jun 14 15:34:41 UTC 2013


This and the previous patches in series seem ok.

On Fri, Jun 14, 2013 at 10:32 AM, Sebastian Huber
<sebastian.huber at 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 at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel



More information about the devel mailing list