|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] Re: [PATCH 3/4] [Net] Support Xen accelerated network plugin
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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
[Xen-devel] Re: [PATCH 3/4] [Net] Support Xen accelerated network plugin modules,
Stephen Hemminger <=
|
|
|
|
|