We have finished the first prototype of kern/cpu_number.h

http://dpaste.com/2QJB8VR

We have to improve many details, about initialization of structures and
implementation of the function (may be better creates a cpu_number.c file,
instead implement the function in the header), but now the compilation
don't fails in this step.

The compilation continues failing, anymore

http://dpaste.com/26VWZ6G

2018-06-16 13:17 GMT+02:00 Almudena Garcia <liberamenso10...@gmail.com>:

> Finally, we got to write a test function to get the apic_id, and It feels
> to run correctly.
> Now, we're trying to implement another function, to transform the apic_id
> in the kernel cpuid.
>
> I attach the current test function to get apic_id with its test file
>
> 2018-06-15 19:36 GMT+02:00 Almudena Garcia <liberamenso10...@gmail.com>:
>
>> Yes, I saw this.
>>
>> When I test It in Linux, I used a dual core computer. But the snippet
>> returns "8" number.
>>
>> Now I know the reason ;)
>>
>> 2018-06-15 19:25 GMT+02:00 Richard Braun <rbr...@sceen.net>:
>>
>>> On Fri, Jun 15, 2018 at 07:18:55PM +0200, Richard Braun wrote:
>>> > On Fri, Jun 15, 2018 at 06:27:21PM +0200, Almudena Garcia wrote:
>>> > > I'm trying to define the cpu_number() in multiprocessor.
>>> > >
>>> > > To do this, I tried to use CPUID assembly x86 instruction, to get
>>> the CPU
>>> > > SMP number.
>>> > > The function, in C, is this:
>>> > >
>>> > > static inline char smp_processor_id(void) {
>>> > >   char apic_id = 0;
>>> > >   asm("mov $1, %%eax\n\t"
>>> > >   "cpuid\n\t"
>>> > >   "mov %%bh, %0\n\t" : "=g" (apic_id));
>>> > >   return apic_id;
>>> > > }
>>> > >
>>> > > In Linux, after executing this in a test source, It returns '8'
>>> > >
>>> > > But, when I try to execute It in Hurd, It shows a segmentation fault.
>>> > >
>>> > > I attach the test source file
>>> > >
>>> > >
>>> > > Can you help me?
>>>
>>> Also note here that you're confusing the APIC ID, a device identifier at
>>> the hardware level, with the CPU ID, a processor identifier at the kernel
>>> level. On some machines, the APIC ID may be higher than or equal to the
>>> maximum number of processor installed.
>>>
>>> --
>>> Richard Braun
>>>
>>
>>
>

Reply via email to