qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [patch] NetBSD and Dragonfly support
@ 2009-09-04  7:30 Aleksej Saushev
  2009-09-08 14:48 ` Christoph Hellwig
  2009-09-08 14:51 ` [Qemu-devel] raw_getlength, was " Christoph Hellwig
  0 siblings, 2 replies; 3+ messages in thread
From: Aleksej Saushev @ 2009-09-04  7:30 UTC (permalink / raw)
  To: qemu-devel

  Hello!

Please, consider merging following differences against QEMU 0.10.6
to support NetBSD and Dragonfly.

Collective work of pkgsrc project.


$NetBSD: patch-av,v 1.3 2007/10/07 21:21:00 heinz Exp $

  Provide trunc() implementation for NetBSD 3 and Dragonfly

--- fpu/softfloat-native.c.orig	2007-02-06 00:01:54.000000000 +0100
+++ fpu/softfloat-native.c
@@ -3,6 +3,20 @@
 #include "softfloat.h"
 #include <math.h>
 
+#if defined(__DragonFly__) || defined(__NetBSD__)
+# include <sys/param.h>
+#endif
+
+#if (defined(__DragonFly__) && __DragonFly_version < 195000) || (defined(__NetBSD__) && __NetBSD_Version__ <= 399001700)
+static double trunc( double val )
+{
+    if (val > 0)
+        return floor(val);
+    else
+        return ceil(val);
+}
+#endif
+
 void set_float_rounding_mode(int val STATUS_PARAM)
 {
     STATUS(float_rounding_mode) = val;
$NetBSD: patch-da,v 1.1 2009/08/31 10:18:49 hasso Exp $

--- audio/sdlaudio.c.orig	2009-08-30 08:33:14 +0300
+++ audio/sdlaudio.c	2009-08-30 08:41:26 +0300
@@ -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>
$NetBSD: patch-db,v 1.1 2009/08/31 10:18:49 hasso Exp $

--- block-raw-posix.c.orig	2009-07-17 03:56:22 +0300
+++ block-raw-posix.c	2009-08-30 15:51:48 +0300
@@ -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
@@ -766,6 +771,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;
$NetBSD: patch-dc,v 1.1 2009/08/31 10:18:49 hasso Exp $

--- block.c.orig	2009-07-17 03:56:22 +0300
+++ block.c	2009-08-30 15:53:21 +0300
@@ -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)
$NetBSD: patch-dd,v 1.1 2009/08/31 10:18:49 hasso Exp $

--- configure.orig	2009-07-17 03:56:22 +0300
+++ configure	2009-08-30 19:37:40 +0300
@@ -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"
$NetBSD: patch-de,v 1.2 2009/08/31 14:30:50 tnn Exp $

--- exec.c.orig	2009-07-17 02:56:22.000000000 +0200
+++ exec.c
@@ -454,7 +454,7 @@ static void code_gen_alloc(unsigned long
             exit(1);
         }
     }
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__)
     {
         int flags;
         void *addr = NULL;
$NetBSD: patch-df,v 1.1 2009/08/31 10:18:49 hasso Exp $

--- net.c.orig	2009-08-30 08:33:13 +0300
+++ net.c	2009-08-30 15:58:08 +0300
@@ -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>
$NetBSD: patch-dg,v 1.2 2009/08/31 14:34:07 tnn Exp $

--- osdep.c.orig	2009-07-17 02:56:24.000000000 +0200
+++ osdep.c
@@ -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__) || defined(__NetBSD__)
     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__ || __NetBSD__) */
     ptr = mmap(NULL,
                size,
                PROT_WRITE | PROT_READ, map_anon | MAP_SHARED,
$NetBSD: patch-dh,v 1.1 2009/08/31 10:18:49 hasso Exp $

--- qemu-char.c.orig	2009-07-17 03:56:24 +0300
+++ qemu-char.c	2009-08-30 16:00:34 +0300
@@ -66,6 +66,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
@@ -798,7 +802,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;
@@ -928,7 +932,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
@@ -1274,7 +1278,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;
@@ -2162,13 +2166,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
$NetBSD: patch-di,v 1.1 2009/08/31 10:18:49 hasso Exp $

--- savevm.c.orig	2009-08-30 08:33:14 +0300
+++ savevm.c	2009-08-30 16:01:20 +0300
@@ -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>
$NetBSD: patch-dj,v 1.1 2009/08/31 10:18:49 hasso Exp $

--- usb-bsd.c.orig	2009-07-17 03:56:26 +0300
+++ usb-bsd.c	2009-08-30 16:01:57 +0300
@@ -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 
     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 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 +415,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]);
$NetBSD: patch-dk,v 1.3 2009/08/31 14:49:21 tnn Exp $

--- vl.c.orig	2009-07-17 02:56:26.000000000 +0200
+++ vl.c
@@ -74,7 +74,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>
@@ -755,7 +755,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__) || defined(__NetBSD__)
     {
         struct timespec ts;
         if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) {
@@ -767,7 +768,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__) || defined(__NetBSD__)
     if (use_rt_clock) {
         struct timespec ts;
         clock_gettime(CLOCK_MONOTONIC, &ts);
$NetBSD: patch-dl,v 1.2 2009/08/31 13:07:04 asau Exp $

--- cpu-exec.c.orig	2009-07-17 04:56:22.000000000 +0400
+++ cpu-exec.c	2009-08-31 16:38:35.000000000 +0400
@@ -1156,6 +1156,18 @@
 # define EIP_sig(context)  (*((unsigned long*)&(context)->uc_mcontext->ss.eip))
 # define TRAP_sig(context)    ((context)->uc_mcontext->es.trapno)
 # define ERROR_sig(context)   ((context)->uc_mcontext->es.err)
+#elif defined (__NetBSD__)
+# include <ucontext.h>
+
+# define EIP_sig(context)     ((context)->uc_mcontext.__gregs[_REG_EIP])
+# define TRAP_sig(context)    ((context)->uc_mcontext.__gregs[_REG_TRAPNO])
+# define ERROR_sig(context)   ((context)->uc_mcontext.__gregs[_REG_ERR])
+#elif defined (__FreeBSD__) || defined(__DragonFly__)
+# include <ucontext.h>
+
+# define EIP_sig(context)  (*((unsigned long*)&(context)->uc_mcontext.mc_eip))
+# define TRAP_sig(context)    ((context)->uc_mcontext.mc_trapno)
+# define ERROR_sig(context)   ((context)->uc_mcontext.mc_err)
 #else
 # define EIP_sig(context)     ((context)->uc_mcontext.gregs[REG_EIP])
 # define TRAP_sig(context)    ((context)->uc_mcontext.gregs[REG_TRAPNO])
@@ -1166,7 +1178,11 @@
                        void *puc)
 {
     siginfo_t *info = pinfo;
+#if defined(__NetBSD__) || defined (__FreeBSD__) || defined(__DragonFly__)
+    ucontext_t *uc = puc;
+#else
     struct ucontext *uc = puc;
+#endif
     unsigned long pc;
     int trapno;
 
$NetBSD: patch-dm,v 1.1 2009/08/31 10:18:49 hasso Exp $

--- exec-all.h.orig	2009-08-31 11:12:02 +0300
+++ exec-all.h	2009-08-31 11:12:15 +0300
@@ -35,7 +35,7 @@
 typedef struct TranslationBlock TranslationBlock;
 
 /* XXX: make safe guess about sizes */
-#define MAX_OP_PER_INSTR 64
+#define MAX_OP_PER_INSTR 128
 /* A Call op needs up to 6 + 2N parameters (N = number of arguments).  */
 #define MAX_OPC_PARAM 10
 #define OPC_BUF_SIZE 512


-- 
CE3OH...

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [patch] NetBSD and Dragonfly support
  2009-09-04  7:30 [Qemu-devel] [patch] NetBSD and Dragonfly support Aleksej Saushev
@ 2009-09-08 14:48 ` Christoph Hellwig
  2009-09-08 14:51 ` [Qemu-devel] raw_getlength, was " Christoph Hellwig
  1 sibling, 0 replies; 3+ messages in thread
From: Christoph Hellwig @ 2009-09-08 14:48 UTC (permalink / raw)
  To: Aleksej Saushev; +Cc: qemu-devel

On Fri, Sep 04, 2009 at 11:30:09AM +0400, Aleksej Saushev wrote:
>   Hello!
> 
> Please, consider merging following differences against QEMU 0.10.6
> to support NetBSD and Dragonfly.
> 
> Collective work of pkgsrc project.

I don't think one big patch for this is a good idea, one area per
subject would be a lot easier maintainable as there are different
people knowing the different areas better.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Qemu-devel] raw_getlength, was [patch] NetBSD and Dragonfly support
  2009-09-04  7:30 [Qemu-devel] [patch] NetBSD and Dragonfly support Aleksej Saushev
  2009-09-08 14:48 ` Christoph Hellwig
@ 2009-09-08 14:51 ` Christoph Hellwig
  1 sibling, 0 replies; 3+ messages in thread
From: Christoph Hellwig @ 2009-09-08 14:51 UTC (permalink / raw)
  To: Aleksej Saushev; +Cc: qemu-devel

On Fri, Sep 04, 2009 at 11:30:09AM +0400, Aleksej Saushev wrote:
> --- block-raw-posix.c.orig	2009-07-17 03:56:22 +0300
> +++ block-raw-posix.c	2009-08-30 15:51:48 +0300
> @@ -63,6 +63,11 @@
>  #include <sys/dkio.h>
>  #endif
>  
> +#ifdef __DragonFly__
> +#include <sys/ioctl.h>
> +#include <sys/diskslice.h>
> +#endif

This code already exists in current gemu git HEAD.

>  //#define DEBUG_BLOCK
> @@ -766,6 +771,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

Same for this.  But raw_getlength has been turned into an utter
mess.  Any chance you could see if the patch below works on the various
BSD platforms?


Signed-off-by: Christoph Hellwig <hch@lst.de>

Index: qemu/block/raw-posix.c
===================================================================
--- qemu.orig/block/raw-posix.c	2009-09-08 11:43:05.933253874 -0300
+++ qemu/block/raw-posix.c	2009-09-08 11:45:01.000031738 -0300
@@ -124,9 +124,6 @@ typedef struct BDRVRawState {
 static int fd_open(BlockDriverState *bs);
 static int64_t raw_getlength(BlockDriverState *bs);
 
-#if defined(__FreeBSD__)
-static int cdrom_reopen(BlockDriverState *bs);
-#endif
 
 static int raw_open_common(BlockDriverState *bs, const char *filename,
                            int bdrv_flags, int open_flags)
@@ -614,80 +611,74 @@ static int64_t raw_getlength(BlockDriver
     } else
         return st.st_size;
 }
-#else /* !__OpenBSD__ */
-static int64_t  raw_getlength(BlockDriverState *bs)
+#elif defined(CONFIG_BSD)
+static int64_t raw_getlength(BlockDriverState *bs)
 {
     BDRVRawState *s = bs->opaque;
     int fd = s->fd;
-    int64_t size;
-#ifdef CONFIG_BSD
+    int64_t size = 0;
     struct stat sb;
-#ifdef __FreeBSD__
-    int reopened = 0;
-#endif
-#endif
-#ifdef __sun__
-    struct dk_minfo minfo;
-    int rv;
-#endif
     int ret;
 
     ret = fd_open(bs);
     if (ret < 0)
         return ret;
 
-#ifdef CONFIG_BSD
-#ifdef __FreeBSD__
-again:
-#endif
-    if (!fstat(fd, &sb) && (S_IFCHR & sb.st_mode)) {
+    if (fstat(fd, &sb) != 0 || !(S_IFCHR & sb.st_mode)) {
+        return lseek(fd, 0, SEEK_END);
+
 #ifdef DIOCGMEDIASIZE
-	if (ioctl(fd, DIOCGMEDIASIZE, (off_t *)&size))
+    if (!ioctl(fd, DIOCGMEDIASIZE, (off_t *)&size))
+        return size;
 #elif defined(DIOCGPART)
-        {
-                struct partinfo pi;
-                if (ioctl(fd, DIOCGPART, &pi) == 0)
-                        size = pi.media_size;
-                else
-                        size = 0;
-        }
-        if (size == 0)
+    {
+        struct partinfo pi;
+        if (ioctl(fd, DIOCGPART, &pi) == 0)
+            return pi.media_size;
+    }
 #endif
+
 #ifdef CONFIG_COCOA
-        size = LONG_LONG_MAX;
+    return LONG_LONG_MAX;
 #else
-        size = lseek(fd, 0LL, SEEK_END);
-#endif
-#ifdef __FreeBSD__
-        switch(s->type) {
-        case FTYPE_CD:
-            /* XXX FreeBSD acd returns UINT_MAX sectors for an empty drive */
-            if (size == 2048LL * (unsigned)-1)
-                size = 0;
-            /* XXX no disc?  maybe we need to reopen... */
-            if (size <= 0 && !reopened && cdrom_reopen(bs) >= 0) {
-                reopened = 1;
-                goto again;
-            }
-        }
-#endif
-    } else
+    return lseek(fd, 0LL, SEEK_END);
 #endif
-#ifdef __sun__
+}
+#elif defined(__sun__)
+static int64_t raw_getlength(BlockDriverState *bs)
+{
+    BDRVRawState *s = bs->opaque;
+    struct dk_minfo minfo;
+    int ret;
+
+    ret = fd_open(bs);
+    if (ret < 0)
+        return ret;
+
     /*
-     * use the DKIOCGMEDIAINFO ioctl to read the size.
+     * Use the DKIOCGMEDIAINFO ioctl to read the size.
      */
-    rv = ioctl ( fd, DKIOCGMEDIAINFO, &minfo );
-    if ( rv != -1 ) {
-        size = minfo.dki_lbsize * minfo.dki_capacity;
-    } else /* there are reports that lseek on some devices
-              fails, but irc discussion said that contingency
-              on contingency was overkill */
-#endif
-    {
-        size = lseek(fd, 0, SEEK_END);
-    }
-    return size;
+    ret = ioctl(s->fd, DKIOCGMEDIAINFO, &minfo);
+    if (ret != -1) {
+        return minfo.dki_lbsize * minfo.dki_capacity;
+
+    /*
+     * There are reports that lseek on some devices fails, but irc
+     * irc discussion said that contingency on contingency was overkill.
+     */
+    return lseek(s->fd, 0, SEEK_END);
+}
+#else
+static int64_t raw_getlength(BlockDriverState *bs)
+{
+    BDRVRawState *s = bs->opaque;
+    int ret;
+
+    ret = fd_open(bs);
+    if (ret < 0)
+        return ret;
+
+    return lseek(s->fd, 0, SEEK_END);
 }
 #endif
 
@@ -1240,9 +1231,27 @@ static int cdrom_reopen(BlockDriverState
     return 0;
 }
 
+static int64_t cdrom_getlength(BlockDriverState *bs)
+{
+    int64_t size;
+    int reopened = 0;
+
+    for (;;) {
+        size = raw_getlength(bs);
+
+        /* XXX FreeBSD acd returns UINT_MAX sectors for an empty drive */
+        if (size == 2048LL * (unsigned)-1)
+            size = 0;
+        /* XXX no disc?  maybe we need to reopen... */
+        if (size > 0 || reopened || cdrom_reopen(bs) < 0)
+            return size;
+        reopened = 1;
+    }
+}
+
 static int cdrom_is_inserted(BlockDriverState *bs)
 {
-    return raw_getlength(bs) > 0;
+    return cdrom_getlength(bs) > 0;
 }
 
 static int cdrom_eject(BlockDriverState *bs, int eject_flag)
@@ -1298,7 +1307,7 @@ static BlockDriver bdrv_host_cdrom = {
 
     .bdrv_read          = raw_read,
     .bdrv_write         = raw_write,
-    .bdrv_getlength     = raw_getlength,
+    .bdrv_getlength     = cdrom_getlength,
 
     /* removable device support */
     .bdrv_is_inserted   = cdrom_is_inserted,

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-09-08 14:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-04  7:30 [Qemu-devel] [patch] NetBSD and Dragonfly support Aleksej Saushev
2009-09-08 14:48 ` Christoph Hellwig
2009-09-08 14:51 ` [Qemu-devel] raw_getlength, was " Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).