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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux