Xorg input thread (2)

Helge Bahmann hcb at chaoticmind.net
Wed Jul 18 01:05:52 PDT 2007


Am Mittwoch, 18. Juli 2007 07:22 schrieb Keith Packard:
> On Tue, 2007-07-17 at 22:15 -0300, Tiago Vignatti wrote:
> > Well, my attempt to do this
> > statically failed.
>
> Hmm. Last time I did this, it didn't seem *that* hard; tracing the code
> from the mouse device input function through the event queuing code and
> off to the cursor update functions. The thing is, getting it 'wrong'
> only means paging occasionally, which isn't fatal, and can easily be
> fixed after the fact.
>
> In particular, the code shouldn't be calling *any* libc functions, or
> things like xalloc/xfree as those are not re-entrant from even a signal
> handler. If you're tracing a path like that, we've already lost as you
> can't use the non-threaded C library if that's happening.

You may not even issue any system calls because this might trash the "errno" 
variable of the main thread (signal handlers save and restore it 
automatically I think), this does of course include poll/read or whatever you 
use to receive the mouse data from the kernel.

Using pthreads is probably the only easy option, and as far as I could 
determine the overhead of using a threaded libc is lost in the noise (on 
Linux you can just LD_PRELOAD libpthread if you want to try without 
recompiling).

Best regards,
Helge Bahmann



More information about the xorg mailing list