|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V5 31/32] libxl: update domain configuration when updating memory targets
On Tue, 2014-05-13 at 22:54 +0100, Wei Liu wrote:
> Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> ---
> tools/libxl/libxl.c | 36 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)
>
> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> index b578a5c..f93096b 100644
> --- a/tools/libxl/libxl.c
> +++ b/tools/libxl/libxl.c
> @@ -3529,6 +3529,25 @@ out:
>
>
> /******************************************************************************/
>
> +/* Macro to load / store domain configuration. They must use in pair.
> + * Load macro defines d_config that can be used by other code. Store
> + * macro will dispose d_config.
> + */
I was asking for a helper earlier, I suppose this could be useful there
too.
TBH I think a helper fn and callback arrangement would be preferable to
magic macros (macros only when there is no alternative I think). I
suppose that would result in a plethora of little callback helpers
though. Hrm, what do you think?
> +#define LOAD_DOMAIN_CONFIG(domid) \
> + libxl_domain_config d_config; \
> + libxl_domain_config_init(&d_config); \
> + rc = libxl_load_domain_configuration(CTX, (domid), &d_config); \
> + if (rc) \
> + goto out; \
> +
> +#define STORE_DOMAIN_CONFIG(domid) \
> + rc = libxl_store_domain_configuration(CTX, (domid), &d_config); \
> + if (rc) { \
> + libxl_domain_config_dispose(&d_config); \
> + goto out; \
> + } \
> + libxl_domain_config_dispose(&d_config); \
rc =
libxl_domain_config_dispose
if (rc)
goto out;
would work here I think, since dispose doesn't clobber rc.
> +
> /* Macro for defining device remove/destroy functions in a compact way */
> /* The following functions are defined:
> * libxl_device_disk_remove
> @@ -4005,6 +4024,14 @@ int libxl_domain_setmaxmem(libxl_ctx *ctx, uint32_t
> domid, uint32_t max_memkb)
> goto out;
> }
>
> + {
> + LOAD_DOMAIN_CONFIG(domid);
> +
> + d_config.b_info.max_memkb = max_memkb;
> +
> + STORE_DOMAIN_CONFIG(domid);
> + }
> +
> rc = 0;
> out:
> GC_FREE;
> @@ -4241,6 +4268,15 @@ out:
> if (errno == EAGAIN)
> goto retry_transaction;
>
> + /* Currently Dom0 information is not yet managed by libxl */
> + if (!rc && domid) {
> + LOAD_DOMAIN_CONFIG(domid);
> +
> + d_config.b_info.target_memkb = new_target_memkb;
> +
> + STORE_DOMAIN_CONFIG(domid);
> + }
> +
> out_no_transaction:
> GC_FREE;
> return rc;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |