summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-01-17 23:31:19 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-01-17 23:31:19 +0000
commit605686cd7acdc37b87134c7eedf01b99db9213c1 (patch)
tree647a93faacb07d0c73745c6072080e59281d2218
parent8182266352df123bbe5661d14ded4ef06d866a60 (diff)
Kqemu support for Solaris, by Ben Taylor.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2329 c046a42c-6fe2-441c-8c8c-71466251a162
-rwxr-xr-xconfigure5
-rw-r--r--kqemu.c3
-rw-r--r--osdep.c13
3 files changed, 21 insertions, 0 deletions
diff --git a/configure b/configure
index 93bbe7b78b..68c3fcc7b6 100755
--- a/configure
+++ b/configure
@@ -151,6 +151,11 @@ if [ "$solaris" = "yes" ] ; then
make="gmake"
install="ginstall"
solarisrev=`uname -r | cut -f2 -d.`
+ if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
+ if test "$solarisrev" -gt 10 ; then
+ kqemu="yes"
+ fi
+ fi
fi
# find source path
diff --git a/kqemu.c b/kqemu.c
index 5ba314f42b..e01556adf5 100644
--- a/kqemu.c
+++ b/kqemu.c
@@ -26,6 +26,9 @@
#include <sys/mman.h>
#include <sys/ioctl.h>
#endif
+#ifdef HOST_SOLARIS
+#include <sys/modctl.h>
+#endif
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
diff --git a/osdep.c b/osdep.c
index 1a4c03688e..d1eff8deb5 100644
--- a/osdep.c
+++ b/osdep.c
@@ -27,6 +27,10 @@
#include <string.h>
#include <errno.h>
#include <unistd.h>
+#ifdef HOST_SOLARIS
+#include <sys/types.h>
+#include <sys/statvfs.h>
+#endif
#include "cpu.h"
#if defined(USE_KQEMU)
@@ -86,13 +90,22 @@ void *kqemu_vmalloc(size_t size)
const char *tmpdir;
char phys_ram_file[1024];
void *ptr;
+#ifdef HOST_SOLARIS
+ struct statvfs stfs;
+#else
struct statfs stfs;
+#endif
if (phys_ram_fd < 0) {
tmpdir = getenv("QEMU_TMPDIR");
if (!tmpdir)
+#ifdef HOST_SOLARIS
+ tmpdir = "/tmp";
+ if (statvfs(tmpdir, &stfs) == 0) {
+#else
tmpdir = "/dev/shm";
if (statfs(tmpdir, &stfs) == 0) {
+#endif
int64_t free_space;
int ram_mb;