xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Olaf Hering <olaf@aepfle.de>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: "xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH v4] tools: set migration constraints from cmdline
Date: Tue, 19 Feb 2013 12:42:17 +0100	[thread overview]
Message-ID: <20130219114217.GA8133@aepfle.de> (raw)
In-Reply-To: <1359983463.7743.23.camel@zakaz.uk.xensource.com>

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_* */
    int max_iters;
    int max_factor;
} libxl_save_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
#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

  parent reply	other threads:[~2013-02-19 11:42 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-28 17:32 [PATCH] tools: set migration constraints from cmdline Olaf Hering
2013-01-30 14:30 ` Ian Campbell
2013-01-30 16:43   ` Olaf Hering
2013-02-04  9:57   ` Olaf Hering
2013-02-04 12:54     ` Ian Campbell
2013-02-04 13:09       ` Olaf Hering
2013-02-04 13:14         ` Ian Campbell
2013-01-30 16:41 ` [PATCH v2] " Olaf Hering
2013-01-31 16:17 ` [PATCH v3] " Olaf Hering
2013-02-01 19:34 ` [PATCH v4] " Olaf Hering
2013-02-04 13:11   ` Ian Campbell
2013-02-04 13:41     ` Olaf Hering
2013-02-04 13:46       ` Ian Campbell
2013-02-04 13:55         ` Olaf Hering
2013-02-04 13:59           ` Ian Campbell
2013-02-04 18:43             ` Olaf Hering
2013-02-05  9:22               ` Ian Campbell
2013-02-05 10:16                 ` Olaf Hering
2013-02-19 11:42     ` Olaf Hering [this message]
2013-02-19 11:48       ` Ian Campbell
2013-02-19 14:12         ` Olaf Hering
2013-02-05 10:03 ` [PATCH v5] " Olaf Hering

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130219114217.GA8133@aepfle.de \
    --to=olaf@aepfle.de \
    --cc=Ian.Campbell@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).