• Adam Jackson's avatar
    Input: evdev - be less aggressive about sending SIGIO notifies · 30a589fd
    Adam Jackson authored
    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: default avatarAdam Jackson <ajax@redhat.com>
    Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
    30a589fd
evdev.c 20.1 KB