WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] libxc: fix link error of xc_save on ia64

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] libxc: fix link error of xc_save on ia64
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 24 Mar 2009 16:15:09 -0700
Delivery-date: Tue, 24 Mar 2009 16:15:16 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1237877729 0
# Node ID 0b13d9787622d5e1d447a21657394805bb96d26f
# Parent  0477f9061c8a751a22975e11c53764b919dfb4c4
libxc: fix link error of xc_save on ia64

The suspend event channel functions are arch independent code
which xc_save uses.
The changeset of 19382:a5f497f02e34 cause link error on ia64.
This patch moves the functions into arch common file from
x86 specific file xc_domain_save.c

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 tools/libxc/Makefile         |    2 
 tools/libxc/xc_domain_save.c |  109 ----------------------------------------
 tools/libxc/xc_suspend.c     |  117 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 118 insertions(+), 110 deletions(-)

diff -r 0477f9061c8a -r 0b13d9787622 tools/libxc/Makefile
--- a/tools/libxc/Makefile      Fri Mar 20 17:42:46 2009 +0000
+++ b/tools/libxc/Makefile      Tue Mar 24 06:55:29 2009 +0000
@@ -29,7 +29,7 @@ CTRL_SRCS-$(CONFIG_MiniOS) += xc_minios.
 CTRL_SRCS-$(CONFIG_MiniOS) += xc_minios.c
 
 GUEST_SRCS-y :=
-GUEST_SRCS-y += xg_private.c
+GUEST_SRCS-y += xg_private.c xc_suspend.c
 GUEST_SRCS-$(CONFIG_MIGRATE) += xc_domain_restore.c xc_domain_save.c
 GUEST_SRCS-$(CONFIG_HVM) += xc_hvm_build.c
 
diff -r 0477f9061c8a -r 0b13d9787622 tools/libxc/xc_domain_save.c
--- a/tools/libxc/xc_domain_save.c      Fri Mar 20 17:42:46 2009 +0000
+++ b/tools/libxc/xc_domain_save.c      Tue Mar 24 06:55:29 2009 +0000
@@ -742,115 +742,6 @@ static xen_pfn_t *map_and_save_p2m_table
         free(p2m_frame_list);
 
     return success ? p2m : NULL;
-}
-
-#define SUSPEND_LOCK_FILE "/var/lib/xen/suspend_evtchn_lock.d"
-static int lock_suspend_event(void)
-{
-    int fd, rc;
-    mode_t mask;
-    char buf[128];
-
-    mask = umask(022);
-    fd = open(SUSPEND_LOCK_FILE, O_CREAT | O_EXCL | O_RDWR, 0666);
-    if (fd < 0)
-    {
-        ERROR("Can't create lock file for suspend event channel\n");
-        return -EINVAL;
-    }
-    umask(mask);
-    snprintf(buf, sizeof(buf), "%10ld", (long)getpid());
-
-    rc = write_exact(fd, buf, strlen(buf));
-    close(fd);
-
-    return rc;
-}
-
-static int unlock_suspend_event(void)
-{
-    int fd, pid, n;
-    char buf[128];
-
-    fd = open(SUSPEND_LOCK_FILE, O_RDWR);
-
-    if (fd < 0)
-        return -EINVAL;
-
-    n = read(fd, buf, 127);
-
-    close(fd);
-
-    if (n > 0)
-    {
-        sscanf(buf, "%d", &pid);
-        /* We are the owner, so we can simply delete the file */
-        if (pid == getpid())
-        {
-            unlink(SUSPEND_LOCK_FILE);
-            return 0;
-        }
-    }
-
-    return -EPERM;
-}
-
-int xc_await_suspend(int xce, int suspend_evtchn)
-{
-    int rc;
-
-    do {
-        rc = xc_evtchn_pending(xce);
-        if (rc < 0) {
-            ERROR("error polling suspend notification channel: %d", rc);
-            return -1;
-        }
-    } while (rc != suspend_evtchn);
-
-    /* harmless for one-off suspend */
-    if (xc_evtchn_unmask(xce, suspend_evtchn) < 0)
-        ERROR("failed to unmask suspend notification channel: %d", rc);
-
-    return 0;
-}
-
-int xc_suspend_evtchn_release(int xce, int suspend_evtchn)
-{
-    if (suspend_evtchn >= 0)
-        xc_evtchn_unbind(xce, suspend_evtchn);
-
-    return unlock_suspend_event();
-}
-
-int xc_suspend_evtchn_init(int xc, int xce, int domid, int port)
-{
-    int rc, suspend_evtchn = -1;
-
-    if (lock_suspend_event())
-        return -EINVAL;
-
-    suspend_evtchn = xc_evtchn_bind_interdomain(xce, domid, port);
-    if (suspend_evtchn < 0) {
-        ERROR("failed to bind suspend event channel: %d", suspend_evtchn);
-        goto cleanup;
-    }
-
-    rc = xc_domain_subscribe_for_suspend(xc, domid, port);
-    if (rc < 0) {
-        ERROR("failed to subscribe to domain: %d", rc);
-        goto cleanup;
-    }
-
-    /* event channel is pending immediately after binding */
-    xc_await_suspend(xce, suspend_evtchn);
-
-    return suspend_evtchn;
-
-cleanup:
-    if (suspend_evtchn > 0)
-        xc_suspend_evtchn_release(xce, suspend_evtchn);
-
-    return -1;
 }
 
 int xc_domain_save(int xc_handle, int io_fd, uint32_t dom, uint32_t max_iters,
diff -r 0477f9061c8a -r 0b13d9787622 tools/libxc/xc_suspend.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/libxc/xc_suspend.c  Tue Mar 24 06:55:29 2009 +0000
@@ -0,0 +1,117 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General
+ * Public License.  See the file "COPYING" in the main directory of
+ * this archive for more details.
+ */
+
+#include "xc_private.h"
+#include "xenguest.h"
+
+#define SUSPEND_LOCK_FILE "/var/lib/xen/suspend_evtchn_lock.d"
+static int lock_suspend_event(void)
+{
+    int fd, rc;
+    mode_t mask;
+    char buf[128];
+
+    mask = umask(022);
+    fd = open(SUSPEND_LOCK_FILE, O_CREAT | O_EXCL | O_RDWR, 0666);
+    if (fd < 0)
+    {
+        ERROR("Can't create lock file for suspend event channel\n");
+        return -EINVAL;
+    }
+    umask(mask);
+    snprintf(buf, sizeof(buf), "%10ld", (long)getpid());
+
+    rc = write_exact(fd, buf, strlen(buf));
+    close(fd);
+
+    return rc;
+}
+
+static int unlock_suspend_event(void)
+{
+    int fd, pid, n;
+    char buf[128];
+
+    fd = open(SUSPEND_LOCK_FILE, O_RDWR);
+
+    if (fd < 0)
+        return -EINVAL;
+
+    n = read(fd, buf, 127);
+
+    close(fd);
+
+    if (n > 0)
+    {
+        sscanf(buf, "%d", &pid);
+        /* We are the owner, so we can simply delete the file */
+        if (pid == getpid())
+        {
+            unlink(SUSPEND_LOCK_FILE);
+            return 0;
+        }
+    }
+
+    return -EPERM;
+}
+
+int xc_await_suspend(int xce, int suspend_evtchn)
+{
+    int rc;
+
+    do {
+        rc = xc_evtchn_pending(xce);
+        if (rc < 0) {
+            ERROR("error polling suspend notification channel: %d", rc);
+            return -1;
+        }
+    } while (rc != suspend_evtchn);
+
+    /* harmless for one-off suspend */
+    if (xc_evtchn_unmask(xce, suspend_evtchn) < 0)
+        ERROR("failed to unmask suspend notification channel: %d", rc);
+
+    return 0;
+}
+
+int xc_suspend_evtchn_release(int xce, int suspend_evtchn)
+{
+    if (suspend_evtchn >= 0)
+        xc_evtchn_unbind(xce, suspend_evtchn);
+
+    return unlock_suspend_event();
+}
+
+int xc_suspend_evtchn_init(int xc, int xce, int domid, int port)
+{
+    int rc, suspend_evtchn = -1;
+
+    if (lock_suspend_event())
+        return -EINVAL;
+
+    suspend_evtchn = xc_evtchn_bind_interdomain(xce, domid, port);
+    if (suspend_evtchn < 0) {
+        ERROR("failed to bind suspend event channel: %d", suspend_evtchn);
+        goto cleanup;
+    }
+
+    rc = xc_domain_subscribe_for_suspend(xc, domid, port);
+    if (rc < 0) {
+        ERROR("failed to subscribe to domain: %d", rc);
+        goto cleanup;
+    }
+
+    /* event channel is pending immediately after binding */
+    xc_await_suspend(xce, suspend_evtchn);
+
+    return suspend_evtchn;
+
+cleanup:
+    if (suspend_evtchn > 0)
+        xc_suspend_evtchn_release(xce, suspend_evtchn);
+
+    return -1;
+}

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] libxc: fix link error of xc_save on ia64, Xen patchbot-unstable <=