[PATCH] dix: Provide means to determine server startup time easily.

Tiago Vignatti tiago.vignatti at nokia.com
Tue Aug 17 07:52:10 PDT 2010


On Tue, Aug 17, 2010 at 04:40:02PM +0200, ext Rami Ylimäki wrote:
> It is useful to provide a way to determine server initialization time
> for testers. For example, this patch makes it easy for testers to
> verify that the recent xkbcomp modifications have a positive effect on
> server startup time on boot.
> 
> Signed-off-by: Rami Ylimäki <rami.ylimaki at vincit.fi>
> ---
>  dix/globals.c     |    5 +++++
>  dix/main.c        |    8 ++++++++
>  include/globals.h |    3 +++
>  3 files changed, 16 insertions(+), 0 deletions(-)
> 
> diff --git a/dix/globals.c b/dix/globals.c
> index b128569..43742a7 100644
> --- a/dix/globals.c
> +++ b/dix/globals.c
> @@ -86,6 +86,11 @@ long maxBigRequestSize = MAX_BIG_REQUEST_SIZE;
>  unsigned long globalSerialNumber = 0;
>  unsigned long serverGeneration = 0;
>  
> +/* when X server started initializing itself */
> +CARD32 ServerStartTime = 0;
> +/* when X server was ready to handle clients */
> +CARD32 ServerReadyTime = 0;
> +
>  /* these next four are initialized in main.c */
>  CARD32 ScreenSaverTime;
>  CARD32 ScreenSaverInterval;
> diff --git a/dix/main.c b/dix/main.c
> index 5c46dc1..84232b4 100644
> --- a/dix/main.c
> +++ b/dix/main.c
> @@ -137,6 +137,8 @@ int main(int argc, char *argv[], char *envp[])
>      int		i;
>      HWEventQueueType	alwaysCheckForInput[2];
>  
> +    ServerStartTime = GetTimeInMillis();
> +
>      display = "0";
>  
>      InitRegions();
> @@ -284,6 +286,12 @@ int main(int argc, char *argv[], char *envp[])
>      pthread_mutex_unlock(&serverInitCompleteMutex);
>  #endif
>          
> +	ServerReadyTime = GetTimeInMillis();
> +	LogMessage(X_INFO, "Server initialized in %lu.%.3lu seconds (%lu.%.3lu -> %lu.%.3lu)\n",
> +	           (ServerReadyTime - ServerStartTime) / 1000, (ServerReadyTime - ServerStartTime) % 1000,
> +	           ServerStartTime / 1000, ServerStartTime % 1000,
> +	           ServerReadyTime / 1000, ServerReadyTime % 1000);
> +
>  	NotifyParentProcess();
>  
>  	Dispatch();
> diff --git a/include/globals.h b/include/globals.h
> index 8b80a65..28932a6 100644
> --- a/include/globals.h
> +++ b/include/globals.h
> @@ -6,6 +6,9 @@
>  
>  /* Global X server variables that are visible to mi, dix, os, and ddx */
>  
> +extern _X_EXPORT CARD32 ServerStartTime;
> +extern _X_EXPORT CARD32 ServerReadyTime;
> +
>  extern _X_EXPORT CARD32 defaultScreenSaverTime;
>  extern _X_EXPORT CARD32 defaultScreenSaverInterval;
>  extern _X_EXPORT CARD32 ScreenSaverTime;

why don't squash the global variables inside main.c, Rami? Also, instead
LogMessage I think DebugF is a better candidate here. 


Cheers,
             Tiago


More information about the xorg-devel mailing list