I like! > in buffer, before passing the buffer on to iio_push_buffers(). The buffer needs > large enough to hold the timestamp in this case. If timestamps are disabled > iio_push_buffers_with_timestamp() will behave just like iio_push_buffers(). computation of the buffer size is the remaining piece of ugliness; indio_dev->scan_bytes in not available at probe time > Signed-off-by: Lars-Peter Clausen <lars@xxxxxxxxxx> > Cc: Oleksandr Kravchenko <o.v.kravchenko@xxxxxxxxxxxxxxx> > Cc: Josh Wu <josh.wu@xxxxxxxxx> > Cc: Denis Ciocca <denis.ciocca@xxxxxxxxx> > Cc: Manuel Stahl <manuel.stahl@xxxxxxxxxxxxxxxxx> > Cc: Ge Gao <ggao@xxxxxxxxxxxxxx> > Cc: Peter Meerwald <pmeerw@xxxxxxxxxx> > Cc: Peter Meerwald <pmeerw@xxxxxxxxxx> twice, so honoured :) nitpick below > diff --git a/include/linux/iio/buffer.h b/include/linux/iio/buffer.h > index e5507e9..1ebc382 100644 > --- a/include/linux/iio/buffer.h > +++ b/include/linux/iio/buffer.h > @@ -116,12 +116,37 @@ int iio_scan_mask_set(struct iio_dev *indio_dev, > struct iio_buffer *buffer, int bit); > > /** > - * iio_push_to_buffers() - push to a registered buffer. > + * iio_push_to_buffers_with_timestamp() - push to a registered buffer. should still be iio_push_to_buffers() here > * @indio_dev: iio_dev structure for device. > * @data: Full scan. > */ > int iio_push_to_buffers(struct iio_dev *indio_dev, const void *data); > > +/* > + * iio_push_to_buffers_with_timestamp() - push data and timestamp to buffers > + * @indio_dev: iio_dev structure for device. > + * @data: sample data > + * @timestamp: timestamp for the sample data > + * > + * Pushes data to the IIO device's buffers. If timestamps are enabled for the > + * device the function will store the supplied timestamp as the last element in > + * the sample data buffer before pushing it to the device buffers. The sample > + * data buffer needs to be large enough to hold the additional timestamp > + * (usually the buffer should be indio->scan_bytes bytes large). > + * > + * Returns 0 on success, a negative error code otherwise. > + */ > +static inline int iio_push_to_buffers_with_timestamp(struct iio_dev *indio_dev, > + void *data, int64_t timestamp) > +{ > + if (indio_dev->scan_timestamp) { > + size_t ts_offset = indio_dev->scan_bytes / sizeof(int64_t) - 1; > + ((int64_t *)data)[ts_offset] = timestamp; > + } > + > + return iio_push_to_buffers(indio_dev, data); > +} > + > int iio_update_demux(struct iio_dev *indio_dev); > > /** > -- Peter Meerwald +43-664-2444418 (mobile) -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html