diff options
author | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2009-03-07 20:06:23 +0000 |
---|---|---|
committer | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2009-03-07 20:06:23 +0000 |
commit | c5e97233e8c8e53aab1b80b5e9891a71c4edea3e (patch) | |
tree | 6bf1eb8605f56e1f1647df85e4351a24e763895f | |
parent | 9399f095bd742ef8dc0f1b08baa3893d9bdbeebc (diff) |
Support for DragonFly BSD (Hasso Tepper)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6746 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | audio/sdlaudio.c | 2 | ||||
-rw-r--r-- | block-raw-posix.c | 14 | ||||
-rw-r--r-- | block.c | 2 | ||||
-rwxr-xr-x | configure | 9 | ||||
-rw-r--r-- | exec.c | 2 | ||||
-rw-r--r-- | net.c | 2 | ||||
-rw-r--r-- | osdep.c | 4 | ||||
-rw-r--r-- | qemu-char.c | 14 | ||||
-rw-r--r-- | savevm.c | 2 | ||||
-rw-r--r-- | usb-bsd.c | 10 | ||||
-rw-r--r-- | vl.c | 8 |
11 files changed, 52 insertions, 17 deletions
diff --git a/audio/sdlaudio.c b/audio/sdlaudio.c index dd85e98322..5d6fc24116 100644 --- a/audio/sdlaudio.c +++ b/audio/sdlaudio.c @@ -29,7 +29,7 @@ #ifndef _WIN32 #ifdef __sun__ #define _POSIX_PTHREAD_SEMANTICS 1 -#elif defined(__OpenBSD__) || defined(__FreeBSD__) +#elif defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) #include <pthread.h> #endif #include <signal.h> diff --git a/block-raw-posix.c b/block-raw-posix.c index 85ca704946..8695368994 100644 --- a/block-raw-posix.c +++ b/block-raw-posix.c @@ -63,6 +63,11 @@ #include <sys/dkio.h> #endif +#ifdef __DragonFly__ +#include <sys/ioctl.h> +#include <sys/diskslice.h> +#endif + //#define DEBUG_FLOPPY //#define DEBUG_BLOCK @@ -762,6 +767,15 @@ static int64_t raw_getlength(BlockDriverState *bs) if (!fstat(fd, &sb) && (S_IFCHR & sb.st_mode)) { #ifdef DIOCGMEDIASIZE if (ioctl(fd, DIOCGMEDIASIZE, (off_t *)&size)) +#elif defined(DIOCGPART) + { + struct partinfo pi; + if (ioctl(fd, DIOCGPART, &pi) == 0) + size = pi.media_size; + else + size = 0; + } + if (size == 0) #endif #ifdef CONFIG_COCOA size = LONG_LONG_MAX; @@ -35,8 +35,10 @@ #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> +#ifndef __DragonFly__ #include <sys/disk.h> #endif +#endif #define SECTOR_BITS 9 #define SECTOR_SIZE (1 << SECTOR_BITS) @@ -229,6 +229,15 @@ if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then kqemu="yes" fi ;; +DragonFly) +bsd="yes" +audio_drv_list="oss" +audio_possible_drivers="oss sdl esd pa" +if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then + kqemu="yes" +fi +aio="no" +;; NetBSD) bsd="yes" audio_drv_list="oss" @@ -454,7 +454,7 @@ static void code_gen_alloc(unsigned long tb_size) exit(1); } } -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__DragonFly__) { int flags; void *addr = NULL; @@ -54,7 +54,7 @@ #include <sys/select.h> #ifdef _BSD #include <sys/stat.h> -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) #include <libutil.h> #else #include <util.h> @@ -92,7 +92,7 @@ static void *kqemu_vmalloc(size_t size) void *ptr; /* no need (?) for a dummy file on OpenBSD/FreeBSD */ -#if defined(__OpenBSD__) || defined(__FreeBSD__) +#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) int map_anon = MAP_ANON; #else int map_anon = 0; @@ -159,7 +159,7 @@ static void *kqemu_vmalloc(size_t size) } size = (size + 4095) & ~4095; ftruncate(phys_ram_fd, phys_ram_size + size); -#endif /* !(__OpenBSD__ || __FreeBSD__) */ +#endif /* !(__OpenBSD__ || __FreeBSD__ || __DragonFly__) */ ptr = mmap(NULL, size, PROT_WRITE | PROT_READ, map_anon | MAP_SHARED, diff --git a/qemu-char.c b/qemu-char.c index 26e8825fec..566a0baabf 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -67,6 +67,10 @@ #include <libutil.h> #include <dev/ppbus/ppi.h> #include <dev/ppbus/ppbconf.h> +#elif defined(__DragonFly__) +#include <libutil.h> +#include <dev/misc/ppi/ppi.h> +#include <bus/ppbus/ppbconf.h> #else #include <util.h> #endif @@ -806,7 +810,7 @@ void cfmakeraw (struct termios *termios_p) #endif #if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \ - || defined(__NetBSD__) || defined(__OpenBSD__) + || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) typedef struct { int fd; @@ -934,7 +938,7 @@ static CharDriverState *qemu_chr_open_pty(void) PtyCharDriver *s; struct termios tty; int slave_fd, len; -#if defined(__OpenBSD__) +#if defined(__OpenBSD__) || defined(__DragonFly__) char pty_name[PATH_MAX]; #define q_ptsname(x) pty_name #else @@ -1280,7 +1284,7 @@ static CharDriverState *qemu_chr_open_pp(const char *filename) } #endif /* __linux__ */ -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) static int pp_ioctl(CharDriverState *chr, int cmd, void *arg) { int fd = (int)chr->opaque; @@ -2153,13 +2157,13 @@ CharDriverState *qemu_chr_open(const char *label, const char *filename, void (*i if (strstart(filename, "/dev/parport", NULL)) { chr = qemu_chr_open_pp(filename); } else -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__DragonFly__) if (strstart(filename, "/dev/ppi", NULL)) { chr = qemu_chr_open_pp(filename); } else #endif #if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \ - || defined(__NetBSD__) || defined(__OpenBSD__) + || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) if (strstart(filename, "/dev/", NULL)) { chr = qemu_chr_open_tty(filename); } else @@ -54,7 +54,7 @@ #include <sys/select.h> #ifdef _BSD #include <sys/stat.h> -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) #include <libutil.h> #else #include <util.h> @@ -34,7 +34,11 @@ #undef USB_SPEED_LOW #include <sys/ioctl.h> +#ifndef __DragonFly__ #include <dev/usb/usb.h> +#else +#include <bus/usb/usb.h> +#endif #include <signal.h> /* This value has maximum potential at 16. @@ -68,7 +72,7 @@ static int ensure_ep_open(USBHostDevice *dev, int ep, int mode) ep = UE_GET_ADDR(ep); if (dev->ep_fd[ep] < 0) { -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) snprintf(buf, sizeof(buf) - 1, "%s.%d", dev->devpath, ep); #else snprintf(buf, sizeof(buf) - 1, "%s.%02d", dev->devpath, ep); @@ -321,7 +325,7 @@ USBDevice *usb_host_device_open(const char *devname) return NULL; } -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) snprintf(ctlpath, PATH_MAX, "/dev/%s", bus_info.udi_devnames[0]); #else snprintf(ctlpath, PATH_MAX, "/dev/%s.00", bus_info.udi_devnames[0]); @@ -411,7 +415,7 @@ static int usb_host_scan(void *opaque, USBScanFunc *func) if (strncmp(bus_info.udi_devnames[0], "ugen", 4) != 0) continue; -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) snprintf(devbuf, sizeof(devbuf) - 1, "/dev/%s", bus_info.udi_devnames[0]); #else snprintf(devbuf, sizeof(devbuf) - 1, "/dev/%s.00", bus_info.udi_devnames[0]); @@ -55,7 +55,7 @@ #include <sys/select.h> #ifdef _BSD #include <sys/stat.h> -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) #include <libutil.h> #else #include <util.h> @@ -759,7 +759,8 @@ static int use_rt_clock; static void init_get_clock(void) { use_rt_clock = 0; -#if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) +#if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ + || defined(__DragonFly__) { struct timespec ts; if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) { @@ -771,7 +772,8 @@ static void init_get_clock(void) static int64_t get_clock(void) { -#if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) +#if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ + || defined(__DragonFly__) if (use_rt_clock) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); |