lkml.org 
[lkml]   [2011]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: select() on /dev/input/eventX not level-triggered?
    On Mon, May 23, 2011 at 10:06:22PM +0200, Pavel Machek wrote:
    > On Mon 2011-05-23 11:13:12, Dmitry Torokhov wrote:
    > > On Fri, May 20, 2011 at 01:50:51AM +0200, Pavel Machek wrote:
    > > > Hi!
    > > >
    > > > I'm debugging strange behaviour on /dev/input/eventX ... it seems that
    > > > select is not behaving level-triggered as it apparently should. I can
    > > > reproduce it when hitting windows & alt keys.
    > > >
    > > > Now, I really should rewrite it into C, first, but perhaps someone has
    > > > an idea?
    >
    > (Ok, so we agree that select() should mark descriptor as ready as
    > long as data are available... right?)
    >
    > > Is this with next or with mainline? In next we try not to signal that FD
    > > is ready unless we have full packet in the buffer...
    >
    > 2.6.39-rcX mainline.
    >
    > > FWIW I see python indeed not reading the tail of events (btw the format
    > > should be 'llhhi' and the size on 64 bit arches is 24, not 16) but when
    > > I hacked evtest to use select and non-blockign read it all worked
    > > properly.
    >
    > It was on x32, but I'll fix that, thanks.
    >
    > Difference was I'm not using non-blocking read().

    Does not matter.

    > It is unusual but
    > should work AFAICT. Just read one packet when select shows its ready;
    > if there's more than one, don't loop around read, but rely on select
    > returning immediately.
    >
    > I did verify it on strace, so it should not be python artefact.

    It is artefact of your program, you buffering your input. Use:

    file = open("/dev/input/event3", "rb", 0)

    Thanks.

    --
    Dmitry


    \
     
     \ /
      Last update: 2011-05-23 22:51    [W:0.022 / U:153.280 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site