Re: [PATCH v3 3/5] Add support for receiving USBTMC USB488 SRQ notifications via poll/select

From: Andy Shevchenko
Date: Wed Nov 11 2015 - 14:04:35 EST


On Wed, Nov 11, 2015 at 1:16 PM, Dave Penkler <dpenkler@xxxxxxxxx> wrote:
> Background:
> In many situations operations on multiple instruments need to be
> synchronized. poll/select provide a convenient way of waiting on a number
> of different instruments and other peripherals simultaneously.
>
> Signed-off-by: Dave Penkler <dpenkler@xxxxxxxxx>
> ---
> drivers/usb/class/usbtmc.c | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
> index 2239cd0..bb9a6ab 100644
> --- a/drivers/usb/class/usbtmc.c
> +++ b/drivers/usb/class/usbtmc.c
> @@ -27,6 +27,7 @@
> #include <linux/uaccess.h>
> #include <linux/kref.h>
> #include <linux/slab.h>
> +#include <linux/poll.h>
> #include <linux/mutex.h>
> #include <linux/usb.h>
> #include <linux/usb/tmc.h>
> @@ -1193,6 +1194,27 @@ static int usbtmc_fasync(int fd, struct file *file, int on)
> return fasync_helper(fd, file, on, &data->fasync);
> }
>
> +static unsigned int usbtmc_poll(struct file *file, poll_table *wait)
> +{
> + struct usbtmc_device_data *data = file->private_data;
> + unsigned int mask = 0;

Redundant assignment.

> +
> + mutex_lock(&data->io_mutex);
> +
> + if (data->zombie) {
> + mask = POLLHUP | POLLERR;
> + goto no_poll;
> + }
> +
> + poll_wait(file, &data->waitq, wait);
> +
> + mask = (atomic_read(&data->srq_asserted)) ? POLLIN | POLLRDNORM : 0;
> +
> +no_poll:
> + mutex_unlock(&data->io_mutex);
> + return mask;
> +}
> +
> static const struct file_operations fops = {
> .owner = THIS_MODULE,
> .read = usbtmc_read,
> @@ -1201,6 +1223,7 @@ static const struct file_operations fops = {
> .release = usbtmc_release,
> .unlocked_ioctl = usbtmc_ioctl,
> .fasync = usbtmc_fasync,
> + .poll = usbtmc_poll,
> .llseek = default_llseek,
> };
>
> --
> 2.5.1
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/



--
With Best Regards,
Andy Shevchenko
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/