[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: [PATCH 3/4] [Net] Support Xen accelerated network plugin modules
O > + > +/* > + * Macro to call one of the accelerator's function hooks. The use > + * count for the accelerator's hooks is incremented for the duration > + * of the call to prevent the accelerator being able to modify the > + * hooks in the middle (by, for example, unloading) > + */ > +#define netfront_call_accelerator_hook(_np, _hook, _args...) > \ > + do { > \ > + if ( (_np)->accel_vif_state.hooks ) { > \ > + unsigned flags; > \ > + spin_lock_irqsave(&accelerators_lock, flags); > \ > + ++(_np)->accelerator->hooks_usecount; > \ > + spin_unlock_irqrestore(&accelerators_lock, > flags); \ > + if ( (_np)->accel_vif_state.hooks ) > \ > + (_np)->accel_vif_state.hooks->_hook > (_args); \ > + spin_lock_irqsave(&accelerators_lock, flags); > \ > + if ( (--(_np)->accelerator->hooks_usecount) == > 0 ) \ > + accelerator_remove_hooks((_np)- > >accelerator); \ > + spin_unlock_irqrestore(&accelerators_lock, > flags); \ > + } > \ > + } while(0) Gag, why a macro... See earlier comments about suing RCU and eliminating the refcount and locking overhead. -- Stephen Hemminger <shemminger@xxxxxxxxxxxxxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |