Jan-Matthias Braun spotted the problem that once the ring buffer
authorBernd Porr <Bernd.Porr@f2s.com>
Thu, 26 Nov 2009 20:10:14 +0000 (20:10 +0000)
committerBernd Porr <Bernd.Porr@f2s.com>
Thu, 26 Nov 2009 20:10:14 +0000 (20:10 +0000)
of comedi has run empty the next read command would block forever
even after new data has arrived. Thanks for Jan-Matthias and Ian
who fixed the bug.

comedi/drivers/usbdux.c

index 7fabeee6032871b32dc2346b47719b11ac0d8a83..1a42d6c5a28f706492207b6ba7e26a6b7fec0676 100644 (file)
@@ -1,4 +1,4 @@
-#define DRIVER_VERSION "v2.3"
+#define DRIVER_VERSION "v2.4"
 #define DRIVER_AUTHOR "Bernd Porr, BerndPorr@f2s.com"
 #define DRIVER_DESC "Stirling/ITL USB-DUX -- Bernd.Porr@f2s.com"
 /*
@@ -77,6 +77,8 @@ sampling rate. If you sample two channels you get 4kHz and so on.
  * 2.1:  changed PWM API
  * 2.2:  added firmware kernel request to fix an udev problem
  * 2.3:  fixed a timeout bug with newer kernels (>2.6.30)
+ * 2.4:  fixed a bug which causes the driver to hang when it ran out of data.
+ *       Thanks to Jan-Matthias Braun and Ian to spot the bug and fix it.
  */
 
 // generates loads of debug info
@@ -538,6 +540,7 @@ static void usbduxsub_ai_IsocIrq(struct urb *urb PT_REGS_ARG)
                }       
        }
        // tell comedi that data is there
+       s->async->events |= COMEDI_CB_BLOCK | COMEDI_CB_EOS;
        comedi_event(this_usbduxsub->comedidev, s);
 }