|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4] tools: set migration constraints from cmdline
On Tue, 2013-02-19 at 11:42 +0000, Olaf Hering wrote:
> On Mon, Feb 04, Ian Campbell wrote:
>
> > On Fri, 2013-02-01 at 19:34 +0000, Olaf Hering wrote:
> > > +++ b/tools/libxl/libxl.h
> > > @@ -500,12 +500,25 @@ int libxl_domain_create_restore(libxl_ct
> > > void libxl_domain_config_init(libxl_domain_config *d_config);
> > > void libxl_domain_config_dispose(libxl_domain_config *d_config);
> > >
> > > -int libxl_domain_suspend(libxl_ctx *ctx, uint32_t domid, int fd,
> > > +int libxl_domain_suspend_0x040200(libxl_ctx *ctx, uint32_t domid, int fd,
> > > int flags, /* LIBXL_SUSPEND_* */
> > > const libxl_asyncop_how *ao_how)
> > > LIBXL_EXTERNAL_CALLERS_ONLY;
> > > +#ifdef LIBXL_API_VERSION
> > > +#if LIBXL_API_VERSION == 0x040200
> > > +#define libxl_domain_suspend libxl_domain_suspend_0x040200
> >
> > int libxl_domain_suspend(libxl_ctx *ctx, uint32_t domid, int fd,
> > int flags, /* LIBXL_SUSPEND_* */
> > int max_iters, int max_factor,
> > const libxl_asyncop_how *ao_how)
> > LIBXL_EXTERNAL_CALLERS_ONLY;
> > #ifdef LIBXL_API_VERSION
> > #if LIBXL_API_VERSION == 0x040200
> > #define libxl_domain_suspend(ctx, domid, fd, flags, ao_how) \
> > libxl_domain_suspend(ctx, domid, fd, flags, 0, 0, ao_how)
> > #endif /* LIBXL_API_VERSION == 0x040200 */
> > #endif /* defined(LIBXL_API_VERSION) */
> >
> > Should work?
> >
> > Not sure if
> > #if defined(LIBXL_API_VERSION) && LIBXL_API_VERSION == 0x040200
> > works in CPP.
> >
> > Maybe we should
> > #ifndef LIBXL_API_VERSION
> > #define LIBXL_API_VERSION LIBXL_API_VERSION_LATEST
> > #endif
> > ?
>
> Here is another attempt to make use of LIBXL_API_VERSION. Two versions
> just for testing. I would use the static inline variant because we code
> in C, not cpp.
>
>
> ...
> /* API compatibility. */
> #ifdef LIBXL_API_VERSION
> #if LIBXL_API_VERSION != 0x040200 && LIBXL_API_VERSION != 0x040300
> #error Unknown LIBXL_API_VERSION
> #endif
> #endif
>
> typedef struct {
> int xlflags; /* LIBXL_SUSPEND_* */
Why is this called "xlflags"? xl isn't the only user of this interface.
> int max_iters;
> int max_factor;
> } libxl_save_properties;
s/save/suspend/ to match the function it is passed to? Perhaps
libxl_domain_suspend_properties?
> int libxl_domain_suspend(libxl_ctx *ctx, uint32_t domid, int fd,
> const libxl_save_properties *props,
> const libxl_asyncop_how *ao_how)
> LIBXL_EXTERNAL_CALLERS_ONLY;
> #ifdef LIBXL_API_VERSION
> #if LIBXL_API_VERSION == 0x040200
> #define libxl_domain_suspend(__ctx, __domid, __fd, __flags, __ao_how) \
> ({ \
> libxl_save_properties __props = { .xlflags = (__flags) }; \
> int __ret = libxl_domain_suspend((__ctx), (__domid), (__fd), &__props,
> (__ao_how)); \
> __ret; \
> })
> #elif LIBXL_API_VERSION == 0x040300
> static inline int libxl_domain_suspend_0x040300(libxl_ctx *ctx, uint32_t
> domid, int fd,
> int flags, const libxl_asyncop_how *ao_how)
> {
> libxl_save_properties props = { .xlflags = flags };
> return libxl_domain_suspend(ctx, domid, fd, &props, ao_how);
> }
> #define libxl_domain_suspend libxl_domain_suspend_0x040300
I don't understand the need for this alternative, you are defining
version 0x040300 in this patch and in the absence of LIBXL_API_VERSION
this should therefore be the expected interface I think. We haven't
released Xen 0x040300 yet.
> #endif
> #endif
>
>
> /* cat > t.c
> * gcc -Wall -o t t.c --save-temps -g
> * -I tools/libxc -I tools/libxl
> * -Ltools/libxc -L tools/libxl -lxenlight
> * -Wl,-rpath,$PWD/tools/libxc,-rpath,$PWD/tools/libxl
> */
> #define LIBXL_API_VERSION 0x040300
>
> #include "tools/libxl/libxl.h"
>
> int main(void)
> {
> int ret;
> #if LIBXL_API_VERSION == 0x040200
> ret = libxl_domain_suspend(NULL, 0, 0, 0, NULL);
> #elif LIBXL_API_VERSION == 0x040300
> ret = libxl_domain_suspend(NULL, 0, 0, 0, NULL);
> #else
> ret = libxl_domain_suspend(NULL, 0, 0, NULL, NULL);
> #endif
> return ret;
> }
>
>
> Olaf
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |