[rtems commit] score: Move _SMP_Handler_initialize()
Gedare Bloom
gedare at rtems.org
Sun Feb 23 02:51:57 UTC 2014
On Sat, Feb 22, 2014 at 5:02 PM, Chris Johns <chrisj at rtems.org> wrote:
> On 19/02/2014 7:52 pm, Sebastian Huber wrote:
>>
>> Module: rtems
>> Branch: master
>> Commit: 282bfd3b41e3725ac9f5fb08b1e391af02572f4f
>> Changeset:
>> http://git.rtems.org/rtems/commit/?id=282bfd3b41e3725ac9f5fb08b1e391af02572f4f
>>
>> Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
>> Date: Tue Feb 18 13:03:27 2014 +0100
>>
>> score: Move _SMP_Handler_initialize()
>>
>> ---
>>
>> cpukit/score/src/percpu.c | 31 -------------------------------
>> cpukit/score/src/smp.c | 22 ++++++++++++++++++++++
>> 2 files changed, 22 insertions(+), 31 deletions(-)
>>
>> diff --git a/cpukit/score/src/percpu.c b/cpukit/score/src/percpu.c
>> index aa95aa9..c68f378 100644
>> --- a/cpukit/score/src/percpu.c
>> +++ b/cpukit/score/src/percpu.c
>> @@ -18,40 +18,9 @@
>> #include "config.h"
>> #endif
>>
>> -#include <rtems/system.h>
>> -#include <rtems/score/address.h>
>> -#include <rtems/score/thread.h>
>> #include <rtems/score/percpu.h>
>> -#include <rtems/score/wkspace.h>
>> -#include <rtems/config.h>
>> -#include <string.h>
>>
>> #if defined(RTEMS_SMP)
>> -
>> - #include <rtems/score/smp.h>
>> -
>> - void _SMP_Handler_initialize(void)
>> - {
>> - uint32_t max_cpus = rtems_configuration_get_maximum_processors();
>> - uint32_t cpu;
>> -
>> - /*
>> - * Discover and initialize the secondary cores in an SMP system.
>> - */
>> - max_cpus = _CPU_SMP_Initialize( max_cpus );
>> -
>> - _SMP_Processor_count = max_cpus;
>> -
>> - for ( cpu = 1 ; cpu < max_cpus; ++cpu ) {
>> - const Per_CPU_Control *per_cpu = _Per_CPU_Get_by_index( cpu );
>> -
>> - _Per_CPU_Wait_for_state(
>> - per_cpu,
>> - PER_CPU_STATE_READY_TO_BEGIN_MULTITASKING
>> - );
>> - }
>> - }
>> -
>> void _Per_CPU_Change_state(
>> Per_CPU_Control *per_cpu,
>> Per_CPU_State new_state
>> diff --git a/cpukit/score/src/smp.c b/cpukit/score/src/smp.c
>> index 86116da..bfd77dc 100644
>> --- a/cpukit/score/src/smp.c
>> +++ b/cpukit/score/src/smp.c
>> @@ -29,6 +29,28 @@
>> #include <rtems/bspIo.h>
>> #endif
>>
>> +void _SMP_Handler_initialize( void )
>> +{
>> + uint32_t max_cpus = rtems_configuration_get_maximum_processors();
>> + uint32_t cpu;
>> +
>> + /*
>> + * Discover and initialize the secondary cores in an SMP system.
>> + */
>> + max_cpus = _CPU_SMP_Initialize( max_cpus );
>> +
>> + _SMP_Processor_count = max_cpus;
>> +
>> + for ( cpu = 1 ; cpu < max_cpus; ++cpu ) {
>> + const Per_CPU_Control *per_cpu = _Per_CPU_Get_by_index( cpu );
>> +
>> + _Per_CPU_Wait_for_state(
>> + per_cpu,
>> + PER_CPU_STATE_READY_TO_BEGIN_MULTITASKING
>> + );
>> + }
>> +}
>
>
> I do not agree with this approach. All cores need to be present before
> continuing and it forces cpu 0 to be a "boot" or "primary" processor. This
> design is not symmetric.
>
> Chris
Chris, this patch is just moving around the code that exists. Feel
free to file a PR if you think there is a bug in the existing code.
-Gedare
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel
More information about the devel
mailing list