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

Mark Kettenis mark.kettenis at xs4all.nl
Wed Dec 29 12:19:50 PST 2010


> 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.



More information about the xorg-devel mailing list