mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
iio: Add data_available callback for buffers
This patch adds a new data_available() callback to the iio_buffer_access_funcs struct. The callback is used to indicate whether data is available in the buffer for reading. It is meant to replace the stufftoread flag from the iio_buffer struct. The reasoning for this is that the buffer implementation usually can determine whether data is available rather easily based on its state, on the other hand it can be rather tricky to update the stufftoread flag in a race free way. Signed-off-by: Lars-Peter Clausen <[email protected]> Signed-off-by: Jonathan Cameron <[email protected]>
This commit is contained in:
parent
112b0b79b2
commit
647cc7b9be
2 changed files with 12 additions and 1 deletions
|
|
@ -37,6 +37,14 @@ static bool iio_buffer_is_active(struct iio_buffer *buf)
|
|||
return !list_empty(&buf->buffer_list);
|
||||
}
|
||||
|
||||
static bool iio_buffer_data_available(struct iio_buffer *buf)
|
||||
{
|
||||
if (buf->access->data_available)
|
||||
return buf->access->data_available(buf);
|
||||
|
||||
return buf->stufftoread;
|
||||
}
|
||||
|
||||
/**
|
||||
* iio_buffer_read_first_n_outer() - chrdev read for buffer access
|
||||
*
|
||||
|
|
@ -70,7 +78,7 @@ unsigned int iio_buffer_poll(struct file *filp,
|
|||
return -ENODEV;
|
||||
|
||||
poll_wait(filp, &rb->pollq, wait);
|
||||
if (rb->stufftoread)
|
||||
if (iio_buffer_data_available(rb))
|
||||
return POLLIN | POLLRDNORM;
|
||||
/* need a way of knowing if there may be enough data... */
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue