Commit 4d043a09007d4d06c07b941d881ee298a026961e

Authored by balrog
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 {