Messages in this thread | | | Date | Mon, 20 Feb 2012 19:04:38 +0800 | Subject | Re: A problem with percpu variable cpu_number | From | Tao Jiang <> |
| |
Cong Wang:
Thanks for you reply. But I think it's not the truth.
The percpu variable cpu_number is defined in arch/x86/kernel/setup_percpu.c use DEFINE_PER_CPU(int, cpu_number); and declared in head file arch/x86/include/asm/smp.h use DECLARE_PER_CPU(int, cpu_number);
I read the macor DEFINE_PER_CPU it's decorated by some percpu attributes it will be put in section .data..percpu in init section and init section will be free after the kernel had been initialized so at the beginning of start_kernel() what smp_processor_id() read is not initialized yet am I right ? Let me know if i made some misunderstanding of the code. Thank you.
2012/2/19 Cong Wang <xiyou.wangcong@gmail.com>: > On 02/19/2012 08:20 PM, Tao Jiang wrote: >> >> Hi : >> >> At the beginning of start_kernel() -- init/main.c >> boot_cpu_init() is called >> >> and in boot_cpu_init() will call smp_processor_id() >> it's a macro >> and it will be expanded as (percpu_read(cpu_number)) and so on >> >> but i noticed that it's before setup_per_cpu_areas() in start_kernel() >> is that mean the percpu areas hadn't be initialized yet >> but why smp_processor_id() could be called before setup_per_cpu_areas() > > > It doesn't matter, as the percpu var 'cpu_number' is defined statically: > DECLARE_PER_CPU(int, cpu_number);. > > Thanks.
| |