|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] return value checking on multicalls
Jan Beulich wrote:
> Many places currently don't even check HYPERVISOR_multicall()'s return
> value, not to speak of checking the individual status codes. Would it be
> acceptable to add an argument to this function to request to either fold
> all status values into a global success code, or to force BUG_ON() each
> individual status. Or should I rather add a new function with described
> behavior? Or are there other suggestions?
>
In the xen-pvops tree I made a general-purpose hypercall batching
mechanism, so that there's only one place which needs to check the
multicall return. Its interface is:
/* Multicalls */
struct multicall_space
{
struct multicall_entry *mc;
void *args;
};
/* Allocate room for a multicall and its args */
struct multicall_space xen_mc_entry(size_t args);
/* Flush all pending multicalls */
void xen_mc_flush(void);
/* Issue a multicall if we're not in lazy mode */
static inline void xen_mc_issue(void)
{
if (xen_get_lazy_mode() == PARAVIRT_LAZY_NONE)
xen_mc_flush();
}
xen_mc_flush() just BUGs if either the multicall hypercall itself fails,
or any of the constituent hypercalls.
J
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|