mm/rmap: use rmap_walk() in page_mkclean()
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / iio / kfifo_buf.c
index 95c6fc8..7134e8a 100644 (file)
@@ -42,7 +42,6 @@ static int iio_request_update_kfifo(struct iio_buffer *r)
        } else {
                kfifo_reset_out(&buf->kf);
        }
-       r->stufftoread = false;
        mutex_unlock(&buf->user_lock);
 
        return ret;
@@ -108,7 +107,7 @@ static int iio_store_to_kfifo(struct iio_buffer *r,
        ret = kfifo_in(&kf->kf, data, 1);
        if (ret != 1)
                return -EBUSY;
-       r->stufftoread = true;
+
        wake_up_interruptible_poll(&r->pollq, POLLIN | POLLRDNORM);
 
        return 0;
@@ -127,13 +126,6 @@ static int iio_read_first_n_kfifo(struct iio_buffer *r,
                ret = -EINVAL;
        else
                ret = kfifo_to_user(&kf->kf, buf, n, &copied);
-
-       if (kfifo_is_empty(&kf->kf))
-               r->stufftoread = false;
-       /* verify it is still empty to avoid race */
-       if (!kfifo_is_empty(&kf->kf))
-               r->stufftoread = true;
-
        mutex_unlock(&kf->user_lock);
        if (ret < 0)
                return ret;
@@ -141,6 +133,18 @@ static int iio_read_first_n_kfifo(struct iio_buffer *r,
        return copied;
 }
 
+static bool iio_kfifo_buf_data_available(struct iio_buffer *r)
+{
+       struct iio_kfifo *kf = iio_to_kfifo(r);
+       bool empty;
+
+       mutex_lock(&kf->user_lock);
+       empty = kfifo_is_empty(&kf->kf);
+       mutex_unlock(&kf->user_lock);
+
+       return !empty;
+}
+
 static void iio_kfifo_buffer_release(struct iio_buffer *buffer)
 {
        struct iio_kfifo *kf = iio_to_kfifo(buffer);
@@ -153,6 +157,7 @@ static void iio_kfifo_buffer_release(struct iio_buffer *buffer)
 static const struct iio_buffer_access_funcs kfifo_access_funcs = {
        .store_to = &iio_store_to_kfifo,
        .read_first_n = &iio_read_first_n_kfifo,
+       .data_available = iio_kfifo_buf_data_available,
        .request_update = &iio_request_update_kfifo,
        .get_bytes_per_datum = &iio_get_bytes_per_datum_kfifo,
        .set_bytes_per_datum = &iio_set_bytes_per_datum_kfifo,