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