[PATCH 2/4] dix: Tune dtrace hooks around Dispatch

Alan Coopersmith alan.coopersmith at oracle.com
Tue Dec 13 14:54:21 PST 2011


On 12/13/11 14:31, Adam Jackson wrote:
> Don't call LookupMajorName if the hooks aren't active, it's quite expensive.

It was a simple table lookup when I added it, before the conversion to the
registry functions in commit 996b621bec.

> @@ -425,9 +425,11 @@ Dispatch(void)
>   			client->minorOp = ext->MinorOpcode(client);
>   		}
>   #ifdef XSERVER_DTRACE
> -		XSERVER_REQUEST_START(LookupMajorName(client->majorOp), client->majorOp,
> -			      ((xReq *)client->requestBuffer)->length,
> -			      client->index, client->requestBuffer);
> +		if (XSERVER_REQUEST_START_ENABLED())
> +		    XSERVER_REQUEST_START(LookupMajorName(client->majorOp),
> +					  client->majorOp,
> +					  ((xReq *)client->requestBuffer)->length,
> +					  client->index, client->requestBuffer);
>   #endif
>   		if (result>  (maxBigRequestSize<<  2))
>   		    result = BadLength;
> @@ -438,8 +440,10 @@ Dispatch(void)
>   		    XaceHookAuditEnd(client, result);
>   		}
>   #ifdef XSERVER_DTRACE
> -		XSERVER_REQUEST_DONE(LookupMajorName(client->majorOp), client->majorOp,
> -			      client->sequence, client->index, result);
> +		if (XSERVER_REQUEST_DONE_ENABLED())
> +		    XSERVER_REQUEST_DONE(LookupMajorName(client->majorOp),
> +					 client->majorOp, client->sequence,
> +					 client->index, result);
>   #endif
>
>   		if (client->noClientException != Success)

Seems like there's room for further optimization in the enabled case by caching 
the LookupMajorName result, but that's far less important than the disabled 
case, so just doing this for now is great.

Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>

-- 
	-Alan Coopersmith-        alan.coopersmith at oracle.com
	 Oracle Solaris Platform Engineering: X Window System



More information about the xorg-devel mailing list