[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 30/34] xen: Add missing includes on different files
On 04/09/2014 05:17 PM, Jan Beulich wrote: >>>> On 09.04.14 at 18:06, <julien.grall@xxxxxxxxxx> wrote: >> On 03/27/2014 07:57 AM, Jan Beulich wrote: >>>>>> On 26.03.14 at 18:41, <julien.grall@xxxxxxxxxx> wrote: >>>> In file included from multicall.c:41:0: >>>> ../multicall.c:38:1: error: conflicting types for âcompat_multicallâ >>>> In file included from ../multicall.c:9:0, >>>> from multicall.c:41: >>> >>> Meaning this needs to be dealt with differently: Include the header in >>> both files _and_ add a declaration of compat_multicall() to it (alongside >>> the other compat_ ones already there). >> >> I gave a look to this solution. It won't works because do_multicall is >> replaced by the define in compat/multicall.c:26. It will end up to >> multiple definition of compat_multcall. >> >> I'm not sure how to handle it because, AFAIU, compat/multicall.c is >> defining some macro to redefine the behavior of multicall.c > > Right, but that doesn't prevent the suggested model afaict: > > - compat/multicall.c includes xen/hypercall.h, obtaining proper > prototypes for both do_multicall() and compat_multicall() > - compat/multicall.c re-defines do_multicall (which doesn't affect > the prototypes already seen) > - compat/multicall.c includes multicall.c > - multicall.c's inclusion of xen/hypercall.h does nothing (thanks > to the header guard) > > Did you indeed try this and it didn't work? I've tried another things. Anyway the version below works for me. Thanks for your help. diff --git a/xen/common/compat/multicall.c b/xen/common/compat/multicall.c index 95c047a..0399863 100644 --- a/xen/common/compat/multicall.c +++ b/xen/common/compat/multicall.c @@ -6,6 +6,7 @@ #include <xen/types.h> #include <xen/multicall.h> #include <xen/trace.h> +#include <xen/hypercall.h> #define COMPAT typedef int ret_t; @@ -18,7 +19,6 @@ static inline void xlat_multicall_entry(struct mc_state *mcs) mcs->compat_call.args[i] = mcs->call.args[i]; } -DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t); #define multicall_entry compat_multicall_entry #define multicall_entry_t multicall_entry_compat_t #define do_multicall_call compat_multicall_call diff --git a/xen/common/multicall.c b/xen/common/multicall.c index bb7550b..e39e724 100644 --- a/xen/common/multicall.c +++ b/xen/common/multicall.c @@ -6,9 +6,7 @@ #include <xen/types.h> #include <xen/lib.h> #include <xen/mm.h> -#ifndef COMPAT #include <xen/hypercall.h> -#endif #include <xen/sched.h> #include <xen/event.h> #include <xen/multicall.h> diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h index a9e5229..baa9cc6 100644 --- a/xen/include/xen/hypercall.h +++ b/xen/include/xen/hypercall.h @@ -176,6 +176,11 @@ compat_set_timer_op( u32 lo, s32 hi); +DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t); +extern int +compat_multicall(XEN_GUEST_HANDLE(multicall_entry_compat_t) call_list, + unsigned int nr_calls); + #endif void arch_get_xen_caps(xen_capabilities_info_t *info); -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |