lkml.org 
[lkml]   [2015]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v3 3/5] Add support for receiving USBTMC USB488 SRQ notifications via poll/select
    From
    On Wed, Nov 11, 2015 at 1:16 PM, Dave Penkler <dpenkler@gmail.com> 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@gmail.com>
    > ---
    > 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@vger.kernel.org
    > 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


    \
     
     \ /
      Last update: 2015-11-11 20:21    [W:4.140 / U:0.636 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site