[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |