Skip to content

Commit

Permalink
Input: mousedev - signal that device is writable in mousedev_poll()
Browse files Browse the repository at this point in the history
The Microsoft ImPS/2 mouse protocol being bidirectionnal (sic)
one may have to write in /dev/input/mice; and that works better
if select() does not hang.

Signed-off-by: Julien Moutinho <julm+linux@savines.alpes.fr.eu.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
  • Loading branch information
Julien Moutinho authored and Dmitry Torokhov committed Jul 16, 2010
1 parent 20da92d commit 4d4bf99
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/input/mousedev.c
Original file line number Diff line number Diff line change
Expand Up @@ -765,10 +765,15 @@ static unsigned int mousedev_poll(struct file *file, poll_table *wait)
{
struct mousedev_client *client = file->private_data;
struct mousedev *mousedev = client->mousedev;
unsigned int mask;

poll_wait(file, &mousedev->wait, wait);
return ((client->ready || client->buffer) ? (POLLIN | POLLRDNORM) : 0) |
(mousedev->exist ? 0 : (POLLHUP | POLLERR));

mask = mousedev->exist ? POLLOUT | POLLWRNORM : POLLHUP | POLLERR;
if (client->ready || client->buffer)
mask |= POLLIN | POLLRDNORM;

return mask;
}

static const struct file_operations mousedev_fops = {
Expand Down

0 comments on commit 4d4bf99

Please sign in to comment.