[PATCH 10/22] udev: Use shared NoopDDA to utilize code cache better

Pauli Nieminen ext-pauli.nieminen at nokia.com
Thu Dec 30 01:32:18 PST 2010


On 29/12/10 21:19 +0100, ext Mark Kettenis wrote:
> > From: Pauli <ext-pauli.nieminen at nokia.com>
> > Date: Wed, 29 Dec 2010 21:27:22 +0200
> > 
> > From: Pauli Nieminen <ext-pauli.nieminen at nokia.com>
> > 
> > Calling function that is in code cache is order of magnitude faster. In
> > arm non-cached simple function takes about 1us while cached function
> > takes max 200ns.
> 
> > diff --git a/config/udev.c b/config/udev.c
> > index 496bfbf..393723c 100644
> > --- a/config/udev.c
> > +++ b/config/udev.c
> > @@ -253,11 +253,6 @@ wakeup_handler(pointer data, int err, pointer read_mask)
> >      }
> >  }
> >  
> > -static void
> > -block_handler(pointer data, struct timeval **tv, pointer read_mask)
> > -{
> > -}
> > -
> >  int
> >  config_udev_init(void)
> >  {
> > @@ -290,7 +285,7 @@ config_udev_init(void)
> >      }
> >      udev_enumerate_unref(enumerate);
> >  
> > -    RegisterBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL);
> > +    RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA, wakeup_handler, NULL);
> 
> YUCK!  Obfuscating code like this is sooo wrong.  I don't think
> optimization hacks like this that only really matter for hardware with
> last-century sized caches belong in the Xorg tree.

Obfuscating? Can you explain how this obfuscates code?

I tough that NoopDDA is standard way of assign empty function to any
callback. It is already used in most places but these weren't using it.

IMO it is less clear if we have everywhere random empty function just for
broken BlockAndWakeupHandlers. But I guess fixing the API might also option.


More information about the xorg-devel mailing list