[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |