Index: savevm.c =================================================================== --- savevm.c (revision 6718) +++ savevm.c (working copy) @@ -63,7 +63,7 @@ #include #ifdef _BSD #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) #include #else #include Index: usb-bsd.c =================================================================== --- usb-bsd.c (revision 6718) +++ usb-bsd.c (working copy) @@ -27,6 +27,7 @@ #include "qemu-common.h" #include "console.h" #include "hw/usb.h" +#include "monitor.h" /* usb.h declares these */ #undef USB_SPEED_HIGH @@ -34,7 +35,11 @@ #undef USB_SPEED_LOW #include +#ifndef __DragonFly__ #include +#else +#include +#endif #include /* This value has maximum potential at 16. @@ -68,7 +73,7 @@ static int ensure_ep_open(USBHostDevice 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 +326,7 @@ USBDevice *usb_host_device_open(const ch 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 +416,7 @@ static int usb_host_scan(void *opaque, U 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]); Index: osdep.c =================================================================== --- osdep.c (revision 6718) +++ osdep.c (working copy) @@ -90,7 +90,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; @@ -157,7 +157,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, Index: vl.c =================================================================== --- vl.c (revision 6718) +++ vl.c (working copy) @@ -75,7 +75,7 @@ #include #ifdef _BSD #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) #include #else #include @@ -756,7 +756,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) { @@ -768,7 +769,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); Index: block-raw-posix.c =================================================================== --- block-raw-posix.c (revision 6718) +++ block-raw-posix.c (working copy) @@ -63,6 +63,11 @@ #include #endif +#ifdef __DragonFly__ +#include +#include +#endif + //#define DEBUG_FLOPPY //#define DEBUG_BLOCK @@ -762,6 +767,15 @@ static int64_t raw_getlength(BlockDrive 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; Index: net.c =================================================================== --- net.c (revision 6718) +++ net.c (working copy) @@ -59,7 +59,7 @@ #include #ifdef _BSD #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) #include #else #include Index: audio/sdlaudio.c =================================================================== --- audio/sdlaudio.c (revision 6718) +++ audio/sdlaudio.c (working copy) @@ -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 #endif #include Index: qemu-char.c =================================================================== --- qemu-char.c (revision 6718) +++ qemu-char.c (working copy) @@ -67,6 +67,10 @@ #include #include #include +#elif defined(__DragonFly__) +#include +#include +#include #else #include #endif @@ -806,7 +810,7 @@ void cfmakeraw (struct termios *termios_ #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_pt 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 } #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 cha 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 Index: exec.c =================================================================== --- exec.c (revision 6718) +++ exec.c (working copy) @@ -454,7 +454,7 @@ static void code_gen_alloc(unsigned long exit(1); } } -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__DragonFly__) { int flags; void *addr = NULL; Index: texi2pod.pl =================================================================== --- texi2pod.pl (revision 6718) +++ texi2pod.pl (working copy) @@ -1,4 +1,4 @@ -#! /usr/bin/perl -w +#! /usr/bin/env perl -w # Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc. Index: block.c =================================================================== --- block.c (revision 6718) +++ block.c (working copy) @@ -35,8 +35,10 @@ #include #include #include +#ifndef __DragonFly__ #include #endif +#endif #define SECTOR_BITS 9 #define SECTOR_SIZE (1 << SECTOR_BITS) Index: configure =================================================================== --- configure (revision 6718) +++ configure (working copy) @@ -228,6 +228,15 @@ if [ "$cpu" = "i386" -o "$cpu" = "x86_64 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"