Commit 4d043a09007d4d06c07b941d881ee298a026961e
1 parent
b9dc033c
Quiet warnings introduced with the USB iso support.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3329 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
46 additions
and
43 deletions
usb-linux.c
@@ -84,9 +84,9 @@ typedef struct PendingURB { | @@ -84,9 +84,9 @@ typedef struct PendingURB { | ||
84 | struct PendingURB *next; | 84 | struct PendingURB *next; |
85 | } PendingURB; | 85 | } PendingURB; |
86 | 86 | ||
87 | -PendingURB *pending_urbs = NULL; | 87 | +static PendingURB *pending_urbs = NULL; |
88 | 88 | ||
89 | -int add_pending_urb(struct usbdevfs_urb *urb) | 89 | +static int add_pending_urb(struct usbdevfs_urb *urb) |
90 | { | 90 | { |
91 | PendingURB *purb = qemu_mallocz(sizeof(PendingURB)); | 91 | PendingURB *purb = qemu_mallocz(sizeof(PendingURB)); |
92 | if (purb) { | 92 | if (purb) { |
@@ -101,7 +101,7 @@ int add_pending_urb(struct usbdevfs_urb *urb) | @@ -101,7 +101,7 @@ int add_pending_urb(struct usbdevfs_urb *urb) | ||
101 | return 0; | 101 | return 0; |
102 | } | 102 | } |
103 | 103 | ||
104 | -int del_pending_urb(struct usbdevfs_urb *urb) | 104 | +static int del_pending_urb(struct usbdevfs_urb *urb) |
105 | { | 105 | { |
106 | PendingURB *purb = pending_urbs; | 106 | PendingURB *purb = pending_urbs; |
107 | PendingURB *prev = NULL; | 107 | PendingURB *prev = NULL; |
@@ -123,7 +123,8 @@ int del_pending_urb(struct usbdevfs_urb *urb) | @@ -123,7 +123,8 @@ int del_pending_urb(struct usbdevfs_urb *urb) | ||
123 | return 0; | 123 | return 0; |
124 | } | 124 | } |
125 | 125 | ||
126 | -PendingURB *get_pending_urb(struct usbdevfs_urb *urb) | 126 | +#ifdef USE_ASYNCIO |
127 | +static PendingURB *get_pending_urb(struct usbdevfs_urb *urb) | ||
127 | { | 128 | { |
128 | PendingURB *purb = pending_urbs; | 129 | PendingURB *purb = pending_urbs; |
129 | 130 | ||
@@ -136,6 +137,7 @@ PendingURB *get_pending_urb(struct usbdevfs_urb *urb) | @@ -136,6 +137,7 @@ PendingURB *get_pending_urb(struct usbdevfs_urb *urb) | ||
136 | } | 137 | } |
137 | return NULL; | 138 | return NULL; |
138 | } | 139 | } |
140 | +#endif | ||
139 | 141 | ||
140 | static int usb_host_update_interfaces(USBHostDevice *dev, int configuration) | 142 | static int usb_host_update_interfaces(USBHostDevice *dev, int configuration) |
141 | { | 143 | { |
@@ -338,9 +340,46 @@ static int usb_host_handle_data(USBDevice *dev, USBPacket *p) | @@ -338,9 +340,46 @@ static int usb_host_handle_data(USBDevice *dev, USBPacket *p) | ||
338 | } | 340 | } |
339 | } | 341 | } |
340 | 342 | ||
341 | -static void usb_linux_bh_cb(void *opaque); | 343 | +#ifdef USE_ASYNCIO |
344 | +static void usb_linux_bh_cb(void *opaque) | ||
345 | +{ | ||
346 | + PendingURB *pending_urb = (PendingURB *)opaque; | ||
347 | + USBHostDevice *s = pending_urb->dev; | ||
348 | + struct usbdevfs_urb *purb = NULL; | ||
349 | + USBPacket *p = s->packet; | ||
350 | + int ret; | ||
351 | + | ||
352 | + /* FIXME: handle purb->status */ | ||
353 | + qemu_free(pending_urb->bh); | ||
354 | + del_pending_urb(pending_urb->urb); | ||
355 | + | ||
356 | + if (!p) { | ||
357 | + s->urbs_ready++; | ||
358 | + return; | ||
359 | + } | ||
360 | + | ||
361 | + ret = ioctl(s->fd, USBDEVFS_REAPURBNDELAY, &purb); | ||
362 | + if (ret < 0) { | ||
363 | + printf("usb_linux_bh_cb: REAPURBNDELAY ioctl=%d errno=%d\n", | ||
364 | + ret, errno); | ||
365 | + return; | ||
366 | + } | ||
367 | + | ||
368 | +#ifdef DEBUG_ISOCH | ||
369 | + if (purb == pending_urb->urb) { | ||
370 | + printf("usb_linux_bh_cb: urb mismatch reaped=%p pending=%p\n", | ||
371 | + purb, urb); | ||
372 | + } | ||
373 | +#endif | ||
374 | + | ||
375 | + p->len = purb->actual_length; | ||
376 | + usb_packet_complete(p); | ||
377 | + qemu_free(purb); | ||
378 | + s->packet = NULL; | ||
379 | +} | ||
342 | 380 | ||
343 | -void isoch_done(int signum, siginfo_t *info, void *context) { | 381 | +static void isoch_done(int signum, siginfo_t *info, void *context) |
382 | +{ | ||
344 | struct usbdevfs_urb *urb = (struct usbdevfs_urb *)info->si_addr; | 383 | struct usbdevfs_urb *urb = (struct usbdevfs_urb *)info->si_addr; |
345 | USBHostDevice *s = (USBHostDevice *)urb->usercontext; | 384 | USBHostDevice *s = (USBHostDevice *)urb->usercontext; |
346 | PendingURB *purb; | 385 | PendingURB *purb; |
@@ -360,6 +399,7 @@ void isoch_done(int signum, siginfo_t *info, void *context) { | @@ -360,6 +399,7 @@ void isoch_done(int signum, siginfo_t *info, void *context) { | ||
360 | } | 399 | } |
361 | } | 400 | } |
362 | } | 401 | } |
402 | +#endif | ||
363 | 403 | ||
364 | static int usb_host_handle_isoch(USBDevice *dev, USBPacket *p) | 404 | static int usb_host_handle_isoch(USBDevice *dev, USBPacket *p) |
365 | { | 405 | { |
@@ -447,43 +487,6 @@ static int usb_host_handle_isoch(USBDevice *dev, USBPacket *p) | @@ -447,43 +487,6 @@ static int usb_host_handle_isoch(USBDevice *dev, USBPacket *p) | ||
447 | #endif | 487 | #endif |
448 | } | 488 | } |
449 | 489 | ||
450 | -static void usb_linux_bh_cb(void *opaque) | ||
451 | -{ | ||
452 | - PendingURB *pending_urb = (PendingURB *)opaque; | ||
453 | - USBHostDevice *s = pending_urb->dev; | ||
454 | - struct usbdevfs_urb *purb = NULL; | ||
455 | - USBPacket *p = s->packet; | ||
456 | - int ret; | ||
457 | - | ||
458 | - /* FIXME: handle purb->status */ | ||
459 | - qemu_free(pending_urb->bh); | ||
460 | - del_pending_urb(pending_urb->urb); | ||
461 | - | ||
462 | - if (!p) { | ||
463 | - s->urbs_ready++; | ||
464 | - return; | ||
465 | - } | ||
466 | - | ||
467 | - ret = ioctl(s->fd, USBDEVFS_REAPURBNDELAY, &purb); | ||
468 | - if (ret < 0) { | ||
469 | - printf("usb_linux_bh_cb: REAPURBNDELAY ioctl=%d errno=%d\n", | ||
470 | - ret, errno); | ||
471 | - return; | ||
472 | - } | ||
473 | - | ||
474 | -#ifdef DEBUG_ISOCH | ||
475 | - if (purb == pending_urb->urb) { | ||
476 | - printf("usb_linux_bh_cb: urb mismatch reaped=%p pending=%p\n", | ||
477 | - purb, urb); | ||
478 | - } | ||
479 | -#endif | ||
480 | - | ||
481 | - p->len = purb->actual_length; | ||
482 | - usb_packet_complete(p); | ||
483 | - qemu_free(purb); | ||
484 | - s->packet = NULL; | ||
485 | -} | ||
486 | - | ||
487 | /* returns 1 on problem encountered or 0 for success */ | 490 | /* returns 1 on problem encountered or 0 for success */ |
488 | static int usb_linux_update_endp_table(USBHostDevice *s) | 491 | static int usb_linux_update_endp_table(USBHostDevice *s) |
489 | { | 492 | { |