All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hasso Tepper <hasso@estpak.ee>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH] Support for DragonFly BSD
Date: Fri, 6 Mar 2009 11:12:25 +0200	[thread overview]
Message-ID: <200903061112.25904.hasso@estpak.ee> (raw)

[-- Attachment #1: Type: text/plain, Size: 482 bytes --]

The attached patch against trunk allows qemu to compile and work on 
DragonFly BSD platform (BSD usermode emulation targets disabled though). 
The patch is mostly straightforward, only few comments.

* Missing "monitor.h" include is a recent regression in trunk and with 
  this snippet removed the patch applies cleanly to the 0.10.0.

* Using /usr/bin/env should be generally a good idea. Most systems besides 
  Linux doesn't have perl in /usr/bin.


regards,
 
-- 
Hasso Tepper

[-- Attachment #2: qemu-dragonfly-support.patch --]
[-- Type: text/x-diff, Size: 8874 bytes --]

Index: savevm.c
===================================================================
--- savevm.c	(revision 6718)
+++ savevm.c	(working copy)
@@ -63,7 +63,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>
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 <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 +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 <sys/select.h>
 #ifdef _BSD
 #include <sys/stat.h>
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__DragonFly__)
 #include <libutil.h>
 #else
 #include <util.h>
@@ -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 <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(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 <sys/select.h>
 #ifdef _BSD
 #include <sys/stat.h>
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__DragonFly__)
 #include <libutil.h>
 #else
 #include <util.h>
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 <pthread.h>
 #endif
 #include <signal.h>
Index: qemu-char.c
===================================================================
--- qemu-char.c	(revision 6718)
+++ qemu-char.c	(working copy)
@@ -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_
 #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 <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)
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"

             reply	other threads:[~2009-03-06  9:12 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-06  9:12 Hasso Tepper [this message]
2009-03-06  9:37 ` [Qemu-devel] [PATCH] Support for DragonFly BSD malc
2009-03-06 16:36 ` François Revol
2009-03-07 10:09 ` Blue Swirl
2009-03-07 20:11 ` Blue Swirl
2009-03-08 15:11   ` Hasso Tepper
2009-03-08 15:48     ` Andreas Färber
2009-03-08 16:10       ` Blue Swirl
2009-03-08 16:20         ` Hasso Tepper
2009-03-08 18:54         ` malc

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200903061112.25904.hasso@estpak.ee \
    --to=hasso@estpak.ee \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.