# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1291369007 0
# Node ID 4ffab774457dc03d8956113799076cb173522811
# Parent a4d3be2e38ea883d3d2404078adc94960692d022
libxc: move foreign memory functions to xc_foreign_memory.c
Now that this file exists it is a better home for these than xc_misc.c
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
diff -r a4d3be2e38ea -r 4ffab774457d tools/libxc/xc_foreign_memory.c
--- a/tools/libxc/xc_foreign_memory.c Fri Dec 03 09:36:47 2010 +0000
+++ b/tools/libxc/xc_foreign_memory.c Fri Dec 03 09:36:47 2010 +0000
@@ -19,6 +19,37 @@
*/
#include "xc_private.h"
+
+void *xc_map_foreign_pages(xc_interface *xch, uint32_t dom, int prot,
+ const xen_pfn_t *arr, int num)
+{
+ void *res;
+ int i, *err;
+
+ if (num < 0) {
+ errno = -EINVAL;
+ return NULL;
+ }
+
+ err = malloc(num * sizeof(*err));
+ if (!err)
+ return NULL;
+
+ res = xc_map_foreign_bulk(xch, dom, prot, arr, err, num);
+ if (res) {
+ for (i = 0; i < num; i++) {
+ if (err[i]) {
+ errno = -err[i];
+ munmap(res, num * PAGE_SIZE);
+ res = NULL;
+ break;
+ }
+ }
+ }
+
+ free(err);
+ return res;
+}
void *xc_map_foreign_range(xc_interface *xch, uint32_t dom,
int size, int prot, unsigned long mfn)
@@ -49,6 +80,47 @@ void *xc_map_foreign_bulk(xc_interface *
dom, prot, arr, err, num);
}
+/* stub for all not yet converted OSes */
+void *xc_map_foreign_bulk_compat(xc_interface *xch, xc_osdep_handle h,
+ uint32_t dom, int prot,
+ const xen_pfn_t *arr, int *err, unsigned int
num)
+{
+ xen_pfn_t *pfn;
+ unsigned int i;
+ void *ret;
+
+ if ((int)num <= 0) {
+ errno = EINVAL;
+ return NULL;
+ }
+
+ pfn = malloc(num * sizeof(*pfn));
+ if (!pfn) {
+ errno = ENOMEM;
+ return NULL;
+ }
+
+ memcpy(pfn, arr, num * sizeof(*arr));
+ ret = xc_map_foreign_batch(xch, dom, prot, pfn, num);
+
+ if (ret) {
+ for (i = 0; i < num; ++i)
+ switch (pfn[i] ^ arr[i]) {
+ case 0:
+ err[i] = 0;
+ break;
+ default:
+ err[i] = -EINVAL;
+ break;
+ }
+ } else
+ memset(err, 0, num * sizeof(*err));
+
+ free(pfn);
+
+ return ret;
+}
+
/*
* Local variables:
* mode: C
diff -r a4d3be2e38ea -r 4ffab774457d tools/libxc/xc_misc.c
--- a/tools/libxc/xc_misc.c Fri Dec 03 09:36:47 2010 +0000
+++ b/tools/libxc/xc_misc.c Fri Dec 03 09:36:47 2010 +0000
@@ -512,78 +512,6 @@ int xc_hvm_set_mem_type(
}
-/* stub for all not yet converted OSes */
-void *xc_map_foreign_bulk_compat(xc_interface *xch, xc_osdep_handle h,
- uint32_t dom, int prot,
- const xen_pfn_t *arr, int *err, unsigned int
num)
-{
- xen_pfn_t *pfn;
- unsigned int i;
- void *ret;
-
- if ((int)num <= 0) {
- errno = EINVAL;
- return NULL;
- }
-
- pfn = malloc(num * sizeof(*pfn));
- if (!pfn) {
- errno = ENOMEM;
- return NULL;
- }
-
- memcpy(pfn, arr, num * sizeof(*arr));
- ret = xc_map_foreign_batch(xch, dom, prot, pfn, num);
-
- if (ret) {
- for (i = 0; i < num; ++i)
- switch (pfn[i] ^ arr[i]) {
- case 0:
- err[i] = 0;
- break;
- default:
- err[i] = -EINVAL;
- break;
- }
- } else
- memset(err, 0, num * sizeof(*err));
-
- free(pfn);
-
- return ret;
-}
-
-void *xc_map_foreign_pages(xc_interface *xch, uint32_t dom, int prot,
- const xen_pfn_t *arr, int num)
-{
- void *res;
- int i, *err;
-
- if (num < 0) {
- errno = -EINVAL;
- return NULL;
- }
-
- err = malloc(num * sizeof(*err));
- if (!err)
- return NULL;
-
- res = xc_map_foreign_bulk(xch, dom, prot, arr, err, num);
- if (res) {
- for (i = 0; i < num; i++) {
- if (err[i]) {
- errno = -err[i];
- munmap(res, num * PAGE_SIZE);
- res = NULL;
- break;
- }
- }
- }
-
- free(err);
- return res;
-}
-
/*
* Local variables:
* mode: C
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|