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: some xc_gnttab_* functions are not

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] libxc: some xc_gnttab_* functions are not Linux specific
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 24 Dec 2010 15:45:30 -0800
Delivery-date: Fri, 24 Dec 2010 15:45:52 -0800
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 Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1293116901 0
# Node ID a3ace503d04b7debd75f5898faadd0c7bc20c619
# Parent  f69037cc467417db626836d7a41c65c0f28c3c28
libxc: some xc_gnttab_* functions are not Linux specific

They simply make hypercalls and perform other operations via the
abstract interface. Create xc_gnttab.c and move those functions there.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Acked-by: Christoph Egger <Christoph.Egger@xxxxxxx>
Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
 tools/libxc/Makefile     |    1 
 tools/libxc/xc_gnttab.c  |  147 +++++++++++++++++++++++++++++++++++++++++++++++
 tools/libxc/xc_linux.c   |  126 ----------------------------------------
 tools/libxc/xc_minios.c  |   12 ---
 tools/libxc/xc_netbsd.c  |   12 ---
 tools/libxc/xc_solaris.c |   12 ---
 6 files changed, 148 insertions(+), 162 deletions(-)

diff -r f69037cc4674 -r a3ace503d04b tools/libxc/Makefile
--- a/tools/libxc/Makefile      Wed Dec 22 17:48:31 2010 +0000
+++ b/tools/libxc/Makefile      Thu Dec 23 15:08:21 2010 +0000
@@ -11,6 +11,7 @@ CTRL_SRCS-y       += xc_cpupool.c
 CTRL_SRCS-y       += xc_cpupool.c
 CTRL_SRCS-y       += xc_domain.c
 CTRL_SRCS-y       += xc_evtchn.c
+CTRL_SRCS-y       += xc_gnttab.c
 CTRL_SRCS-y       += xc_misc.c
 CTRL_SRCS-y       += xc_acm.c
 CTRL_SRCS-y       += xc_flask.c
diff -r f69037cc4674 -r a3ace503d04b tools/libxc/xc_gnttab.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/libxc/xc_gnttab.c   Thu Dec 23 15:08:21 2010 +0000
@@ -0,0 +1,147 @@
+/******************************************************************************
+ *
+ * Copyright (c) 2007-2008, D G Murray <Derek.Murray@xxxxxxxxxxxx>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  
USA
+ */
+
+#include "xc_private.h"
+
+int xc_gnttab_op(xc_interface *xch, int cmd, void * op, int op_size, int count)
+{
+    int ret = 0;
+    DECLARE_HYPERCALL;
+    DECLARE_HYPERCALL_BOUNCE(op, count * op_size, 
XC_HYPERCALL_BUFFER_BOUNCE_BOTH);
+
+    if ( xc_hypercall_bounce_pre(xch, op) )
+    {
+        PERROR("Could not bounce buffer for grant table op hypercall");
+        goto out1;
+    }
+
+    hypercall.op = __HYPERVISOR_grant_table_op;
+    hypercall.arg[0] = cmd;
+    hypercall.arg[1] = HYPERCALL_BUFFER_AS_ARG(op);
+    hypercall.arg[2] = count;
+
+    ret = do_xen_hypercall(xch, &hypercall);
+
+    xc_hypercall_bounce_post(xch, op);
+
+ out1:
+    return ret;
+}
+
+int xc_gnttab_get_version(xc_interface *xch, int domid)
+{
+    struct gnttab_get_version query;
+    int rc;
+
+    query.dom = domid;
+    rc = xc_gnttab_op(xch, GNTTABOP_get_version, &query, sizeof(query),
+                      1);
+    if ( rc < 0 )
+        return rc;
+    else
+        return query.version;
+}
+
+static void *_gnttab_map_table(xc_interface *xch, int domid, int *gnt_num)
+{
+    int rc, i;
+    struct gnttab_query_size query;
+    struct gnttab_setup_table setup;
+    DECLARE_HYPERCALL_BUFFER(unsigned long, frame_list);
+    xen_pfn_t *pfn_list = NULL;
+    grant_entry_v1_t *gnt = NULL;
+
+    if ( !gnt_num )
+        return NULL;
+
+    query.dom = domid;
+    rc = xc_gnttab_op(xch, GNTTABOP_query_size, &query, sizeof(query), 1);
+
+    if ( rc || (query.status != GNTST_okay) )
+    {
+        ERROR("Could not query dom's grant size\n", domid);
+        return NULL;
+    }
+
+    *gnt_num = query.nr_frames * (PAGE_SIZE / sizeof(grant_entry_v1_t) );
+
+    frame_list = xc_hypercall_buffer_alloc(xch, frame_list, query.nr_frames * 
sizeof(unsigned long));
+    if ( !frame_list )
+    {
+        ERROR("Could not allocate frame_list in xc_gnttab_map_table\n");
+        return NULL;
+    }
+
+    pfn_list = malloc(query.nr_frames * sizeof(xen_pfn_t));
+    if ( !pfn_list )
+    {
+        ERROR("Could not allocate pfn_list in xc_gnttab_map_table\n");
+        goto err;
+    }
+
+    setup.dom = domid;
+    setup.nr_frames = query.nr_frames;
+    set_xen_guest_handle(setup.frame_list, frame_list);
+
+    /* XXX Any race with other setup_table hypercall? */
+    rc = xc_gnttab_op(xch, GNTTABOP_setup_table, &setup, sizeof(setup),
+                      1);
+
+    if ( rc || (setup.status != GNTST_okay) )
+    {
+        ERROR("Could not get grant table frame list\n");
+        goto err;
+    }
+
+    for ( i = 0; i < setup.nr_frames; i++ )
+        pfn_list[i] = frame_list[i];
+
+    gnt = xc_map_foreign_pages(xch, domid, PROT_READ, pfn_list,
+                               setup.nr_frames);
+    if ( !gnt )
+    {
+        ERROR("Could not map grant table\n");
+        goto err;
+    }
+
+err:
+    if ( frame_list )
+        xc_hypercall_buffer_free(xch, frame_list);
+    if ( pfn_list )
+        free(pfn_list);
+
+    return gnt;
+}
+
+grant_entry_v1_t *xc_gnttab_map_table_v1(xc_interface *xch, int domid,
+                                         int *gnt_num)
+{
+    if (xc_gnttab_get_version(xch, domid) == 2)
+        return NULL;
+    return _gnttab_map_table(xch, domid, gnt_num);
+}
+
+grant_entry_v2_t *xc_gnttab_map_table_v2(xc_interface *xch, int domid,
+                                         int *gnt_num)
+{
+    if (xc_gnttab_get_version(xch, domid) != 2)
+        return NULL;
+    return _gnttab_map_table(xch, domid, gnt_num);
+}
+
diff -r f69037cc4674 -r a3ace503d04b tools/libxc/xc_linux.c
--- a/tools/libxc/xc_linux.c    Wed Dec 22 17:48:31 2010 +0000
+++ b/tools/libxc/xc_linux.c    Thu Dec 23 15:08:21 2010 +0000
@@ -608,132 +608,6 @@ int xc_gnttab_set_max_grants(xc_interfac
     return 0;
 }
 
-int xc_gnttab_op(xc_interface *xch, int cmd, void * op, int op_size, int count)
-{
-    int ret = 0;
-    DECLARE_HYPERCALL;
-    DECLARE_HYPERCALL_BOUNCE(op, count * op_size, 
XC_HYPERCALL_BUFFER_BOUNCE_BOTH);
-
-    if ( xc_hypercall_bounce_pre(xch, op) )
-    {
-        PERROR("Could not bounce buffer for grant table op hypercall");
-        goto out1;
-    }
-
-    hypercall.op = __HYPERVISOR_grant_table_op;
-    hypercall.arg[0] = cmd;
-    hypercall.arg[1] = HYPERCALL_BUFFER_AS_ARG(op);
-    hypercall.arg[2] = count;
-
-    ret = do_xen_hypercall(xch, &hypercall);
-
-    xc_hypercall_bounce_post(xch, op);
-
- out1:
-    return ret;
-}
-
-int xc_gnttab_get_version(xc_interface *xch, int domid)
-{
-    struct gnttab_get_version query;
-    int rc;
-
-    query.dom = domid;
-    rc = xc_gnttab_op(xch, GNTTABOP_get_version, &query, sizeof(query),
-                      1);
-    if ( rc < 0 )
-        return rc;
-    else
-        return query.version;
-}
-
-static void *_gnttab_map_table(xc_interface *xch, int domid, int *gnt_num)
-{
-    int rc, i;
-    struct gnttab_query_size query;
-    struct gnttab_setup_table setup;
-    DECLARE_HYPERCALL_BUFFER(unsigned long, frame_list);
-    xen_pfn_t *pfn_list = NULL;
-    grant_entry_v1_t *gnt = NULL;
-
-    if ( !gnt_num )
-        return NULL;
-
-    query.dom = domid;
-    rc = xc_gnttab_op(xch, GNTTABOP_query_size, &query, sizeof(query), 1);
-
-    if ( rc || (query.status != GNTST_okay) )
-    {
-        ERROR("Could not query dom's grant size\n", domid);
-        return NULL;
-    }
-
-    *gnt_num = query.nr_frames * (PAGE_SIZE / sizeof(grant_entry_v1_t) );
-
-    frame_list = xc_hypercall_buffer_alloc(xch, frame_list, query.nr_frames * 
sizeof(unsigned long));
-    if ( !frame_list )
-    {
-        ERROR("Could not allocate frame_list in xc_gnttab_map_table\n");
-        return NULL;
-    }
-
-    pfn_list = malloc(query.nr_frames * sizeof(xen_pfn_t));
-    if ( !pfn_list )
-    {
-        ERROR("Could not allocate pfn_list in xc_gnttab_map_table\n");
-        goto err;
-    }
-
-    setup.dom = domid;
-    setup.nr_frames = query.nr_frames;
-    set_xen_guest_handle(setup.frame_list, frame_list);
-
-    /* XXX Any race with other setup_table hypercall? */
-    rc = xc_gnttab_op(xch, GNTTABOP_setup_table, &setup, sizeof(setup),
-                      1);
-
-    if ( rc || (setup.status != GNTST_okay) )
-    {
-        ERROR("Could not get grant table frame list\n");
-        goto err;
-    }
-
-    for ( i = 0; i < setup.nr_frames; i++ )
-        pfn_list[i] = frame_list[i];
-
-    gnt = xc_map_foreign_pages(xch, domid, PROT_READ, pfn_list,
-                               setup.nr_frames);
-    if ( !gnt )
-    {
-        ERROR("Could not map grant table\n");
-        goto err;
-    }
-
-err:
-    if ( frame_list )
-        xc_hypercall_buffer_free(xch, frame_list);
-    if ( pfn_list )
-        free(pfn_list);
-
-    return gnt;
-}
-
-grant_entry_v1_t *xc_gnttab_map_table_v1(xc_interface *xch, int domid,
-                                         int *gnt_num)
-{
-    if (xc_gnttab_get_version(xch, domid) == 2)
-        return NULL;
-    return _gnttab_map_table(xch, domid, gnt_num);
-}
-
-grant_entry_v2_t *xc_gnttab_map_table_v2(xc_interface *xch, int domid,
-                                         int *gnt_num)
-{
-    if (xc_gnttab_get_version(xch, domid) != 2)
-        return NULL;
-    return _gnttab_map_table(xch, domid, gnt_num);
-}
-
 /*
  * Local variables:
  * mode: C
diff -r f69037cc4674 -r a3ace503d04b tools/libxc/xc_minios.c
--- a/tools/libxc/xc_minios.c   Wed Dec 22 17:48:31 2010 +0000
+++ b/tools/libxc/xc_minios.c   Thu Dec 23 15:08:21 2010 +0000
@@ -457,18 +457,6 @@ int xc_gnttab_set_max_grants(xc_interfac
     return ret;
 }
 
-grant_entry_v1_t *xc_gnttab_map_table_v1(
-    xc_interface *xch, int domid, int *gnt_num)
-{
-    return NULL;
-}
-
-grant_entry_v2_t *xc_gnttab_map_table_v2(
-    xc_interface *xch, int domid, int *gnt_num)
-{
-    return NULL;
-}
-
 /*
  * Local variables:
  * mode: C
diff -r f69037cc4674 -r a3ace503d04b tools/libxc/xc_netbsd.c
--- a/tools/libxc/xc_netbsd.c   Wed Dec 22 17:48:31 2010 +0000
+++ b/tools/libxc/xc_netbsd.c   Thu Dec 23 15:08:21 2010 +0000
@@ -310,18 +310,6 @@ void discard_file_cache(xc_interface *xc
 
  out:
     errno = saved_errno;
-}
-
-grant_entry_v1_t *xc_gnttab_map_table_v1(
-    xc_interface *xch, int domid, int *gnt_num)
-{
-    return NULL;
-}
-
-grant_entry_v2_t *xc_gnttab_map_table_v2(
-    xc_interface *xch, int domid, int *gnt_num)
-{
-    return NULL;
 }
 
 /*
diff -r f69037cc4674 -r a3ace503d04b tools/libxc/xc_solaris.c
--- a/tools/libxc/xc_solaris.c  Wed Dec 22 17:48:31 2010 +0000
+++ b/tools/libxc/xc_solaris.c  Thu Dec 23 15:08:21 2010 +0000
@@ -261,15 +261,3 @@ void discard_file_cache(xc_interface *xc
 {
     // TODO: Implement for Solaris!
 }
-
-grant_entry_v1_t *xc_gnttab_map_table_v1(
-    xc_interface *xch, int domid, int *gnt_num)
-{
-    return NULL;
-}
-
-grant_entry_v2_t *xc_gnttab_map_table_v2(
-    xc_interface *xch, int domid, int *gnt_num)
-{
-    return NULL;
-}

_______________________________________________
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: some xc_gnttab_* functions are not Linux specific, Xen patchbot-unstable <=