Skip to content
Commit cdda911c authored by Jeff Brown's avatar Jeff Brown Committed by Dmitry Torokhov
Browse files

Input: evdev - only signal polls on full packets



This patch modifies evdev so that it only becomes readable when
the buffer contains an EV_SYN/SYN_REPORT event.

On SMP systems, it is possible for an evdev client blocked on poll()
to wake up and read events from the evdev ring buffer at the same
rate as they are enqueued.  This can result in high CPU usage,
particularly for MT devices, because the client ends up reading
events one at a time instead of reading complete packets.

We eliminate this problem by making the device readable only when
the buffer contains at least one complete packet.  This causes
clients to block until the entire packet is available.

Signed-off-by: default avatarJeff Brown <jeffbrown@android.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 03351ff4
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment