Commit 4d4bf995ea873cc213c5abc5402af46ef490b8fd
Committed by
Dmitry Torokhov
1 parent
20da92de8e
Exists in
master
and in
20 other branches
Input: mousedev - signal that device is writable in mousedev_poll()
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>
Showing 1 changed file with 7 additions and 2 deletions Side-by-side Diff
drivers/input/mousedev.c
... | ... | @@ -765,10 +765,15 @@ |
765 | 765 | { |
766 | 766 | struct mousedev_client *client = file->private_data; |
767 | 767 | struct mousedev *mousedev = client->mousedev; |
768 | + unsigned int mask; | |
768 | 769 | |
769 | 770 | poll_wait(file, &mousedev->wait, wait); |
770 | - return ((client->ready || client->buffer) ? (POLLIN | POLLRDNORM) : 0) | | |
771 | - (mousedev->exist ? 0 : (POLLHUP | POLLERR)); | |
771 | + | |
772 | + mask = mousedev->exist ? POLLOUT | POLLWRNORM : POLLHUP | POLLERR; | |
773 | + if (client->ready || client->buffer) | |
774 | + mask |= POLLIN | POLLRDNORM; | |
775 | + | |
776 | + return mask; | |
772 | 777 | } |
773 | 778 | |
774 | 779 | static const struct file_operations mousedev_fops = { |