Kqemu support for Solaris, by Ben Taylor.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 17 Jan 2007 23:31:19 +0000 (23:31 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 17 Jan 2007 23:31:19 +0000 (23:31 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2329 c046a42c-6fe2-441c-8c8c-71466251a162

configure
kqemu.c
osdep.c

index 93bbe7b..68c3fcc 100755 (executable)
--- 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 5ba314f..e01556a 100644 (file)
--- 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 1a4c036..d1eff8d 100644 (file)
--- a/osdep.c
+++ b/osdep.c
 #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;