|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] per_cpu problem
Hi,
I've been playing a little bit with cpu-bound tasklets. For this purpose I
defined a per_cpu list:
static DEFINE_PER_CPU(struct list_head, tasklet_list_pcpu);
The initialization is done in softirq_init:
void __init softirq_init(void)
{
int i;
for_each_possible_cpu ( i )
{
INIT_LIST_HEAD(&per_cpu(tasklet_list_pcpu, i));
}
tasklet_pcpu_inited = 1;
open_softirq(TASKLET_SOFTIRQ, tasklet_action);
}
As soon as a cpu other than cpu 0 is accessing its tasklet_list_pcpu it is
seeing a non-empty list (I've put a printk in tasklet_action):
printk("tasklet_list_pcpu(%d) at %p not empty: %p\n", smp_processor_id(),
&this_cpu(tasklet_list_pcpu), this_cpu(tasklet_list_pcpu).next);
Prints out:
(XEN) tasklet_list_pcpu(1) at ffff82c48026a100 not empty: ffff82c480268100
Somehow INIT_LIST_HEAD seems to put always the address of the list for cpu 0
in the list header. Could this be a compiler bug? Is this an artefact of the
per_cpu macro? Am I missing something?
Juergen
--
Juergen Gross Principal Developer Operating Systems
TSP ES&S SWE OS6 Telephone: +49 (0) 89 3222 2967
Fujitsu Technolgy Solutions e-mail: juergen.gross@xxxxxxxxxxxxxx
Domagkstr. 28 Internet: ts.fujitsu.com
D-80807 Muenchen Company details: ts.fujitsu.com/imprint.html
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] per_cpu problem,
Juergen Gross <=
|
|
|
|
|