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(). 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. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html