All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.