|
@@ -547,3 +547,30 @@ unsigned int comedi_write_array_to_buffer(struct comedi_subdevice *s,
|
|
|
return num_bytes;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(comedi_write_array_to_buffer);
|
|
|
+
|
|
|
+/**
|
|
|
+ * comedi_read_array_from_buffer - read data from comedi buffer
|
|
|
+ * @s: comedi_subdevice struct
|
|
|
+ * @data: destination
|
|
|
+ * @num_bytes: number of bytes to read
|
|
|
+ *
|
|
|
+ * Reads up to num_bytes bytes of data from the comedi buffer associated with
|
|
|
+ * the subdevice, marks it as read and updates the acquisition scan progress.
|
|
|
+ *
|
|
|
+ * Returns the amount of data read in bytes.
|
|
|
+ */
|
|
|
+unsigned int comedi_read_array_from_buffer(struct comedi_subdevice *s,
|
|
|
+ void *data, unsigned int num_bytes)
|
|
|
+{
|
|
|
+ if (num_bytes == 0)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ num_bytes = comedi_buf_read_alloc(s, num_bytes);
|
|
|
+ comedi_buf_memcpy_from(s, 0, data, num_bytes);
|
|
|
+ comedi_buf_read_free(s, num_bytes);
|
|
|
+ comedi_inc_scan_progress(s, num_bytes);
|
|
|
+ s->async->events |= COMEDI_CB_BLOCK;
|
|
|
+
|
|
|
+ return num_bytes;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(comedi_read_array_from_buffer);
|