|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] return value checking on multicalls
>>> Jeremy Fitzhardinge <jeremy@xxxxxxxx> 14.03.07 17:45 >>>
>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.
Hmm, that doesn't seem to fit all cases. There are hypercalls that
return non-errno-like values, and you shouldn't make any
assumptions about these.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|