[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Re: [PATCH 1/3] xen/event: Add reference counting to event channels
On Wed, 2011-10-26 at 17:51 +0100, Ian Campbell wrote: > On Wed, 2011-10-26 at 16:47 +0100, Daniel De Graaf wrote: > > @@ -939,6 +943,10 @@ static void unbind_from_irq(unsigned int irq) > > { > > struct evtchn_close close; > > int evtchn = evtchn_from_irq(irq); > > + struct irq_info *info = irq_get_handler_data(irq); > > + > > + if (atomic_read(&info->refcnt) > 0 && > > !atomic_dec_and_test(&info->refcnt)) > > + return; > > This isn't all that atomic any more... > > evtchn_make_refcounted() doesn't seem to have any locking which would > save you... > > Perhaps you could always manipulate this flag under the mapping lock > (which perhaps is normally taken around about the sort of place you'd > want to do this anyway) and make it non-atomic? > > Or maybe you could build something with cmpxchg? Or atomic_inc_unless_negative seems to be a primitive but there's no atomic_dev_unless_negative so unref is still tricky. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |