On 11/15/2010 11:15 AM, Sheng Yang wrote:
We need to query the entry later. +int kvm_get_irq_routing_entry(struct kvm *kvm, int gsi, + struct kvm_kernel_irq_routing_entry *entry) +{ + int count = 0; + struct kvm_kernel_irq_routing_entry *ei = NULL; + struct kvm_irq_routing_table *irq_rt; + struct hlist_node *n; + + rcu_read_lock(); + irq_rt = rcu_dereference(kvm->irq_routing); + if (gsi< irq_rt->nr_rt_entries) + hlist_for_each_entry(ei, n,&irq_rt->map[gsi], link) + count++; + if (count == 1) + *entry = *ei; + rcu_read_unlock(); + + return (count != 1); +} +
Not good form to rely on ei being valid after the loop. I guess this is only useful for msi? Need to document it. *entry may be stale after rcu_read_unlock(). Is this a problem? -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html