diff mbox

[v2] usb: Support compilation without poll.h

Message ID 1458630800-10088-1-git-send-email-sw@weilnetz.de (mailing list archive)
State New, archived
Headers show

Commit Message

Stefan Weil March 22, 2016, 7:13 a.m. UTC
This is a hack to support compilation with Mingw-w64 which provides
a libusb-1.0 package, but no poll.h.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---

v2: Modified after feedback from Gerd.

 hw/usb/host-libusb.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

Comments

Gerd Hoffmann May 11, 2016, 8:38 a.m. UTC | #1
On Di, 2016-03-22 at 08:13 +0100, Stefan Weil wrote:
> This is a hack to support compilation with Mingw-w64 which provides
> a libusb-1.0 package, but no poll.h.

Added to usb patch queue.
Peter Maydell May 11, 2016, 9:14 a.m. UTC | #2
On 22 March 2016 at 07:13, Stefan Weil <sw@weilnetz.de> wrote:
> This is a hack to support compilation with Mingw-w64 which provides
> a libusb-1.0 package, but no poll.h.
>
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
>
> v2: Modified after feedback from Gerd.

>  static int usb_host_init(void)
>  {
> +#ifndef CONFIG_WIN32
>      const struct libusb_pollfd **poll;
> +#endif
>      int i, rc;
>
>      if (ctx) {
> @@ -235,7 +243,9 @@ static int usb_host_init(void)
>          return -1;
>      }
>      libusb_set_debug(ctx, loglevel);
> -
> +#ifdef CONFIG_WIN32
> +    /* FIXME: add support for Windows. */
> +#else
>      libusb_set_pollfd_notifiers(ctx, usb_host_add_fd,
>                                  usb_host_del_fd,
>                                  ctx);
> @@ -246,6 +256,7 @@ static int usb_host_init(void)
>          }
>      }
>      free(poll);
> +#endif
>      return 0;

Would it make more sense to just disable this functionality
entirely rather than leaving it compiling but not working?

thanks
-- PMM
Gerd Hoffmann May 11, 2016, 9:54 a.m. UTC | #3
On Mi, 2016-05-11 at 10:14 +0100, Peter Maydell wrote:
> On 22 March 2016 at 07:13, Stefan Weil <sw@weilnetz.de> wrote:
> > This is a hack to support compilation with Mingw-w64 which provides
> > a libusb-1.0 package, but no poll.h.

> Would it make more sense to just disable this functionality
> entirely rather than leaving it compiling but not working?

It should be possible to get things working on windows, given that a
libusb port exists now.

/me hopes that having things at least compile might encourage people to
fill the missing bits.

I guess we'll have to either add some windows-specific bits for event
handling (simliar to win_chr_init() in qemu-char.c) or do timer-based
polling.

cheers,
  Gerd
diff mbox

Patch

diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
index 5e7ec45..236bb2a 100644
--- a/hw/usb/host-libusb.c
+++ b/hw/usb/host-libusb.c
@@ -34,7 +34,9 @@ 
  */
 
 #include "qemu/osdep.h"
+#ifndef CONFIG_WIN32
 #include <poll.h>
+#endif
 #include <libusb.h>
 
 #include "qemu-common.h"
@@ -203,6 +205,8 @@  static const char *err_names[] = {
 static libusb_context *ctx;
 static uint32_t loglevel;
 
+#ifndef CONFIG_WIN32
+
 static void usb_host_handle_fd(void *opaque)
 {
     struct timeval tv = { 0, 0 };
@@ -222,9 +226,13 @@  static void usb_host_del_fd(int fd, void *user_data)
     qemu_set_fd_handler(fd, NULL, NULL, NULL);
 }
 
+#endif /* !CONFIG_WIN32 */
+
 static int usb_host_init(void)
 {
+#ifndef CONFIG_WIN32
     const struct libusb_pollfd **poll;
+#endif
     int i, rc;
 
     if (ctx) {
@@ -235,7 +243,9 @@  static int usb_host_init(void)
         return -1;
     }
     libusb_set_debug(ctx, loglevel);
-
+#ifdef CONFIG_WIN32
+    /* FIXME: add support for Windows. */
+#else
     libusb_set_pollfd_notifiers(ctx, usb_host_add_fd,
                                 usb_host_del_fd,
                                 ctx);
@@ -246,6 +256,7 @@  static int usb_host_init(void)
         }
     }
     free(poll);
+#endif
     return 0;
 }