commit 30a589fde0162aa4dac7c69803aeee8fbe8d1b82
Author: Adam Jackson <email address hidden>
Date: Tue Jan 5 17:56:04 2010 -0800
Input: evdev - be less aggressive about sending SIGIO notifies
When using realtime signals, we'll enqueue one signal for every event.
This is unfortunate, because (for example) keyboard presses are three
events: key, msc scancode, and syn. They'll be enqueued fast enough in
kernel space that all three events will be ready to read by the time
userspace runs, so the first invocation of the signal handler will read
all three events, but then the second two invocations still have to run
to do no work.
Instead, only send the SIGIO notification on syn events. This is a
slight abuse of SIGIO semantics, in principle it ought to fire as soon
as any events are readable. But it matches evdev semantics, which is
more important since SIGIO is rather vaguely defined to begin with.
Signed-off-by: Adam Jackson <email address hidden>
Signed-off-by: Dmitry Torokhov <email address hidden>
Adam Jackson has a related kernel commit in 2.6.33-rc5: git.kernel. org/linus/ 30a589fde0162aa 4dac7c69803aeee 8fbe8d1b82
http://
commit 30a589fde0162aa 4dac7c69803aeee 8fbe8d1b82
Author: Adam Jackson <email address hidden>
Date: Tue Jan 5 17:56:04 2010 -0800
Input: evdev - be less aggressive about sending SIGIO notifies
When using realtime signals, we'll enqueue one signal for every event.
This is unfortunate, because (for example) keyboard presses are three
events: key, msc scancode, and syn. They'll be enqueued fast enough in
kernel space that all three events will be ready to read by the time
userspace runs, so the first invocation of the signal handler will read
all three events, but then the second two invocations still have to run
to do no work.
Instead, only send the SIGIO notification on syn events. This is a
slight abuse of SIGIO semantics, in principle it ought to fire as soon
as any events are readable. But it matches evdev semantics, which is
more important since SIGIO is rather vaguely defined to begin with.
Signed-off-by: Adam Jackson <email address hidden>
Signed-off-by: Dmitry Torokhov <email address hidden>