From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45865) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XOzLh-0005d0-Tf for qemu-devel@nongnu.org; Tue, 02 Sep 2014 21:27:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XOzLY-0006UV-SP for qemu-devel@nongnu.org; Tue, 02 Sep 2014 21:27:01 -0400 Message-ID: <54066F78.7040101@gmail.com> Date: Wed, 03 Sep 2014 09:31:36 +0800 From: Chen Gang MIME-Version: 1.0 References: <5405EED9.2090701@gmail.com> In-Reply-To: <5405EED9.2090701@gmail.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] xen-hvm.c: Improve the return method for xen_hvm_init() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: stefano.stabellini@eu.citrix.com Cc: QEMU Trivial , xen-devel@lists.xensource.com, qemu-devel Oh, sorry, forgot Cc to qemu trivial. Thanks. On 9/3/14 0:22, Chen Gang wrote: > When failure occurs, it need use "return -1" instead of exit(1), so can > let upper caller has chance to print failure information, too, then user > can know the failure result more clearly. > > xen_hvm_init() may also return -errno, which may let upper caller think > more (e.g. free some other related resources and try again), although at > present, all related upper callers still exit(1). > > It is not a normal function which does not release related resources, if > return -1. So need give the related comments for it. > > It passes common test under fedora 20 x86_64: > > "./configure --enable-xen && make -j4 && make check" > execute result: "echo $? == 0". > > Signed-off-by: Chen Gang > --- > xen-hvm.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/xen-hvm.c b/xen-hvm.c > index 0d09940..35efec0 100644 > --- a/xen-hvm.c > +++ b/xen-hvm.c > @@ -978,6 +978,7 @@ static void xen_wakeup_notifier(Notifier *notifier, void *data) > xc_set_hvm_param(xen_xc, xen_domid, HVM_PARAM_ACPI_S_STATE, 0); > } > > +/* return value: 0 is OK, -errno is failure, -1 is critical issue -- exit(1) */ > int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size, > MemoryRegion **ram_memory) > { > @@ -998,6 +999,7 @@ int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size, > state->xenstore = xs_daemon_open(); > if (state->xenstore == NULL) { > perror("xen: xenstore open"); > + xc_evtchn_close(state->xce_handle); > g_free(state); > return -errno; > } > @@ -1069,7 +1071,7 @@ int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size, > /* Initialize backend core & drivers */ > if (xen_be_init() != 0) { > fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__); > - exit(1); > + return -1; > } > xen_be_register("console", &xen_console_ops); > xen_be_register("vkbd", &xen_kbdmouse_ops); > -- Chen Gang Open, share, and attitude like air, water, and life which God blessed