[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