All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen Gang <gang.chen.5i5j@gmail.com>
To: stefano.stabellini@eu.citrix.com
Cc: xen-devel@lists.xensource.com, qemu-devel <qemu-devel@nongnu.org>
Subject: [Qemu-devel] [PATCH] xen-hvm.c: Improve the return method for xen_hvm_init()
Date: Wed, 03 Sep 2014 00:22:49 +0800	[thread overview]
Message-ID: <5405EED9.2090701@gmail.com> (raw)

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 <gang.chen.5i5j@gmail.com>
---
 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);
-- 
1.9.3

WARNING: multiple messages have this Message-ID (diff)
From: Chen Gang <gang.chen.5i5j@gmail.com>
To: stefano.stabellini@eu.citrix.com
Cc: xen-devel@lists.xensource.com, qemu-devel <qemu-devel@nongnu.org>
Subject: [PATCH] xen-hvm.c: Improve the return method for xen_hvm_init()
Date: Wed, 03 Sep 2014 00:22:49 +0800	[thread overview]
Message-ID: <5405EED9.2090701@gmail.com> (raw)

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 <gang.chen.5i5j@gmail.com>
---
 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);
-- 
1.9.3

             reply	other threads:[~2014-09-02 16:23 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-02 16:22 Chen Gang [this message]
2014-09-02 16:22 ` [PATCH] xen-hvm.c: Improve the return method for xen_hvm_init() Chen Gang
2014-09-03  1:31 ` [Qemu-trivial] " Chen Gang
2014-09-03  1:31   ` Chen Gang
2014-09-03  1:31   ` [Qemu-devel] " Chen Gang
2014-09-03 23:32   ` [Qemu-trivial] " Stefano Stabellini
2014-09-03 23:32     ` Stefano Stabellini
2014-09-03 23:32     ` [Qemu-devel] " Stefano Stabellini
2014-09-04  1:31     ` [Qemu-trivial] " Chen Gang
2014-09-04  1:31       ` Chen Gang
2014-09-04  1:31       ` [Qemu-devel] " Chen Gang

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=5405EED9.2090701@gmail.com \
    --to=gang.chen.5i5j@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xensource.com \
    /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.