aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/xg_private.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-04-09 17:49:25 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-04-09 17:49:25 +0100
commit1386e66a6eb0203009528069869591152b882702 (patch)
tree900ce82cd0db0a3d6ab3f6db5f7bcc2108512d87 /tools/libxc/xg_private.c
parent3cb6817ad5b7dd6a7a5702d64c8c74184591df05 (diff)
downloadxen-1386e66a6eb0203009528069869591152b882702.tar.gz
xen-1386e66a6eb0203009528069869591152b882702.tar.bz2
xen-1386e66a6eb0203009528069869591152b882702.zip
libxc: Move xg_memalign() into a proper source file, so that it
definitely does not leak out of tools/libxc. Return to the ioemu/osdep.c way of checking for posix_memalign() as this works on Solaris. Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'tools/libxc/xg_private.c')
-rw-r--r--tools/libxc/xg_private.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/libxc/xg_private.c b/tools/libxc/xg_private.c
index 37bc587477..02c0ff70a6 100644
--- a/tools/libxc/xg_private.c
+++ b/tools/libxc/xg_private.c
@@ -8,6 +8,8 @@
#include <unistd.h>
#include <zlib.h>
#include <strings.h>
+#include <stdlib.h>
+#include <malloc.h>
#include "xg_private.h"
@@ -198,6 +200,22 @@ __attribute__((weak))
return -1;
}
+void *xg_memalign(size_t alignment, size_t size)
+{
+#if defined(_POSIX_C_SOURCE) && !defined(__sun__)
+ int ret;
+ void *ptr;
+ ret = posix_memalign(&ptr, alignment, size);
+ if (ret != 0)
+ return NULL;
+ return ptr;
+#elif defined(_BSD)
+ return valloc(size);
+#else
+ return memalign(alignment, size);
+#endif
+}
+
/*
* Local variables:
* mode: C