|
|
|
Re: PER-CPU data | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
On 03/30/2012 12:05 PM, Dave Hylands wrote: > Hi Rajasekhar, > > On Thu, Mar 29, 2012 at 11:00 PM, Rajasekhar Pulluru > <pullururajasekhar@xxxxxxxxx> wrote: >> Hi, >> >> I would like to know how per-cpu data are stored internally? >> And how are they protected from other cores? > To put it in very simplistic terms, per-cpu data is nothing but having NR_CPUS copies of the data, like an array, something like: int data[NR_CPUS]; And accessing this per-cpu data will essentially boil down to finding out the id of the processor you are running on, and indexing this array using that, something like: int val, cpu; cpu = smp_processor_id(); val = data[cpu]; So you automatically read/write the copy that belongs to your processor. That's it. However, this is an over-simplified view of per-cpu data, but you get the general idea... > I believe that they're just kmalloc'd like other kernel data. At the > kernel level there is no protection, just like all the rest of the > memory accessible to the kernel. > http://lxr.linux.no/#linux+v3.3/include/asm-generic/percpu.h#L8 > http://lxr.linux.no/#linux+v3.3/mm/percpu.c > > When you declare a per-cpu variable, it goes into a special section, > and what you're really doing is figuring out the offset within a > per_cpu region of memory. > Regards, Srivatsa S. Bhat _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
[Newbies FAQ] [Linux Kernel Development] [IETF Annouce] [Git] [Networking] [Security] [Bugtraq] [Photo] [Yosemite] [MIPS Linux] [ARM Linux] [Linux Security] [Linux Networking] [Linux RAID] [Linux SCSI] [Linux ACPI]
![]() |
![]() |