[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] libxl: init: Provide a gc later in libxl_ctx_alloc
commit d1f84a51fa92746bb78d8c4d5a907f03eaf52bbe Author: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> AuthorDate: Tue Dec 17 15:22:40 2013 +0000 Commit: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CommitDate: Mon Mar 17 15:53:59 2014 +0000 libxl: init: Provide a gc later in libxl_ctx_alloc Provide libxl__gc *gc for the second half of libxl_ctx_alloc. (For the first half of the function, gc is in scope but set to NULL.) This makes it possible to make gc-requiring calls. For example, it makes error logging more convenient. Make use of this by changing the logging calls to use the LOG* convenience macros. Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/libxl/libxl.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 2d29ad2..224697a 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -25,6 +25,7 @@ int libxl_ctx_alloc(libxl_ctx **pctx, int version, unsigned flags, xentoollog_logger * lg) { libxl_ctx *ctx = NULL; + libxl__gc gc_buf, *gc = NULL; int rc; if (version != LIBXL_VERSION) { rc = ERROR_VERSION; goto out; } @@ -79,6 +80,9 @@ int libxl_ctx_alloc(libxl_ctx **pctx, int version, } /* Now ctx is safe for ctx_free; failures simply set rc and "goto out" */ + LIBXL_INIT_GC(gc_buf,ctx); + gc = &gc_buf; + /* Now gc is useable */ rc = libxl__atfork_init(ctx); if (rc) goto out; @@ -88,8 +92,7 @@ int libxl_ctx_alloc(libxl_ctx **pctx, int version, ctx->xch = xc_interface_open(lg,lg,0); if (!ctx->xch) { - LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, errno, - "cannot open libxc handle"); + LOGEV(ERROR, errno, "cannot open libxc handle"); rc = ERROR_FAIL; goto out; } @@ -97,8 +100,7 @@ int libxl_ctx_alloc(libxl_ctx **pctx, int version, if (!ctx->xsh) ctx->xsh = xs_domain_open(); if (!ctx->xsh) { - LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, errno, - "cannot connect to xenstore"); + LOGEV(ERROR, errno, "cannot connect to xenstore"); rc = ERROR_FAIL; goto out; } @@ -106,6 +108,7 @@ int libxl_ctx_alloc(libxl_ctx **pctx, int version, return 0; out: + if (gc) libxl__free_all(gc); libxl_ctx_free(ctx); *pctx = NULL; return rc; -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |