From: Bernd Porr Date: Sun, 24 May 2009 18:51:39 +0000 (+0000) Subject: added code of buffer overflow. The async acquision stops as soon X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=98f884c82b8c7f0087bbd1da6d7bc924d3dabef8;p=comedi.git added code of buffer overflow. The async acquision stops as soon as there's a buffer overflow. --- diff --git a/comedi/drivers/usbdux.c b/comedi/drivers/usbdux.c index e9981b5f..cd71316f 100644 --- a/comedi/drivers/usbdux.c +++ b/comedi/drivers/usbdux.c @@ -522,15 +522,20 @@ static void usbduxsub_ai_IsocIrq(struct urb *urb PT_REGS_ARG) for (i = 0; i < n; i++) { // transfer data if (CR_RANGE(s->async->cmd.chanlist[i]) <= 1) { - comedi_buf_put + err = comedi_buf_put (s->async, - le16_to_cpu(this_usbduxsub-> - inBuffer[i]) ^ 0x800); + le16_to_cpu(this_usbduxsub-> + inBuffer[i]) ^ 0x800); } else { - comedi_buf_put + err = comedi_buf_put (s->async, - le16_to_cpu(this_usbduxsub->inBuffer[i])); + le16_to_cpu(this_usbduxsub->inBuffer[i])); } + if (unlikely(err == 0)) { + /* buffer overflow */ + usbdux_ai_stop(this_usbduxsub, 0); + return; + } } // tell comedi that data is there comedi_event(this_usbduxsub->comedidev, s); diff --git a/comedi/drivers/usbduxfast.c b/comedi/drivers/usbduxfast.c index 0d21323e..9115e6e1 100644 --- a/comedi/drivers/usbduxfast.c +++ b/comedi/drivers/usbduxfast.c @@ -392,8 +392,14 @@ static void usbduxfastsub_ai_Irq(struct urb *urb PT_REGS_ARG) this_usbduxfastsub->ai_sample_count -= n; } // write the full buffer to comedi - cfc_write_array_to_buffer(s, - urb->transfer_buffer, urb->actual_length); + err = cfc_write_array_to_buffer(s, + urb->transfer_buffer, urb->actual_length); + + if (unlikely(err == 0)) { + /* buffer overflow */ + usbduxfast_ai_stop(this_usbduxfastsub, 0); + return; + } // tell comedi that data is there comedi_event(this_usbduxfastsub->comedidev, s);