aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/doc/dtrace/Xserver-DTrace.xml
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-03-26 14:23:28 +0200
committermarha <marha@users.sourceforge.net>2012-03-26 14:23:28 +0200
commit76bcc36ed305418a3ddc5752d287ede894243e1b (patch)
treebacb320c825768471ce56f058f17ce863d592376 /xorg-server/doc/dtrace/Xserver-DTrace.xml
parent7d894e32566b710952c44cbc71939ad1d9e2fa8d (diff)
parent0f834b91a4768673833ab4917e87d86c237bb1a6 (diff)
downloadvcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.gz
vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.bz2
vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.zip
Merge remote-tracking branch 'origin/released'
Conflicts: pixman/pixman/pixman-mmx.c xorg-server/Xext/shm.c xorg-server/Xext/syncsrv.h xorg-server/Xext/xvmain.c xorg-server/Xi/exevents.c xorg-server/Xi/opendev.c xorg-server/composite/compalloc.c xorg-server/composite/compoverlay.c xorg-server/dix/colormap.c xorg-server/dix/devices.c xorg-server/dix/dispatch.c xorg-server/dix/dixfonts.c xorg-server/dix/eventconvert.c xorg-server/dix/events.c xorg-server/dix/gc.c xorg-server/dix/getevents.c xorg-server/dix/main.c xorg-server/dix/privates.c xorg-server/dix/registry.c xorg-server/dix/resource.c xorg-server/exa/exa_accel.c xorg-server/exa/exa_migration_classic.c xorg-server/exa/exa_unaccel.c xorg-server/fb/fb.h xorg-server/fb/fbcopy.c xorg-server/fb/fbpixmap.c xorg-server/glx/dispatch.h xorg-server/glx/glapi.h xorg-server/glx/glapi_gentable.c xorg-server/glx/glapitable.h xorg-server/glx/glprocs.h xorg-server/glx/glxcmds.c xorg-server/glx/glxcmdsswap.c xorg-server/glx/glxdricommon.c xorg-server/glx/glxdriswrast.c xorg-server/glx/glxext.c xorg-server/glx/indirect_dispatch.c xorg-server/glx/indirect_dispatch.h xorg-server/glx/indirect_dispatch_swap.c xorg-server/glx/indirect_size.h xorg-server/glx/indirect_size_get.h xorg-server/glx/indirect_table.c xorg-server/glx/indirect_util.c xorg-server/glx/rensize.c xorg-server/glx/single2swap.c xorg-server/glx/singlepix.c xorg-server/glx/singlepixswap.c xorg-server/glx/singlesize.c xorg-server/hw/dmx/dmxinit.c xorg-server/hw/kdrive/ephyr/ephyr.c xorg-server/hw/kdrive/ephyr/hostx.c xorg-server/hw/kdrive/ephyr/hostx.h xorg-server/hw/kdrive/src/kinput.c xorg-server/hw/xfree86/common/compiler.h xorg-server/hw/xwin/InitInput.c xorg-server/hw/xwin/InitOutput.c xorg-server/hw/xwin/ddraw.h xorg-server/hw/xwin/glx/glwrap.c xorg-server/hw/xwin/glx/indirect.c xorg-server/hw/xwin/glx/wgl_ext_api.h xorg-server/hw/xwin/glx/winpriv.c xorg-server/hw/xwin/win.h xorg-server/hw/xwin/winallpriv.c xorg-server/hw/xwin/winauth.c xorg-server/hw/xwin/winclipboard.h xorg-server/hw/xwin/winclipboardinit.c xorg-server/hw/xwin/winclipboardthread.c xorg-server/hw/xwin/winclipboardunicode.c xorg-server/hw/xwin/winclipboardwndproc.c xorg-server/hw/xwin/winclipboardwrappers.c xorg-server/hw/xwin/winclipboardxevents.c xorg-server/hw/xwin/wincmap.c xorg-server/hw/xwin/winconfig.c xorg-server/hw/xwin/wincreatewnd.c xorg-server/hw/xwin/wincursor.c xorg-server/hw/xwin/windialogs.c xorg-server/hw/xwin/winengine.c xorg-server/hw/xwin/winerror.c xorg-server/hw/xwin/wingc.c xorg-server/hw/xwin/wingetsp.c xorg-server/hw/xwin/winkeybd.c xorg-server/hw/xwin/winkeybd.h xorg-server/hw/xwin/winlayouts.h xorg-server/hw/xwin/winmisc.c xorg-server/hw/xwin/winmonitors.c xorg-server/hw/xwin/winmouse.c xorg-server/hw/xwin/winmsg.c xorg-server/hw/xwin/winmsg.h xorg-server/hw/xwin/winmultiwindowclass.c xorg-server/hw/xwin/winmultiwindowicons.c xorg-server/hw/xwin/winmultiwindowshape.c xorg-server/hw/xwin/winmultiwindowwindow.c xorg-server/hw/xwin/winmultiwindowwm.c xorg-server/hw/xwin/winmultiwindowwndproc.c xorg-server/hw/xwin/winnativegdi.c xorg-server/hw/xwin/winpfbdd.c xorg-server/hw/xwin/winpixmap.c xorg-server/hw/xwin/winpolyline.c xorg-server/hw/xwin/winprefs.c xorg-server/hw/xwin/winprocarg.c xorg-server/hw/xwin/winregistry.c xorg-server/hw/xwin/winscrinit.c xorg-server/hw/xwin/winsetsp.c xorg-server/hw/xwin/winshaddd.c xorg-server/hw/xwin/winshadddnl.c xorg-server/hw/xwin/winshadgdi.c xorg-server/hw/xwin/wintrayicon.c xorg-server/hw/xwin/winwin32rootless.c xorg-server/hw/xwin/winwin32rootlesswindow.c xorg-server/hw/xwin/winwin32rootlesswndproc.c xorg-server/hw/xwin/winwindow.c xorg-server/hw/xwin/winwindow.h xorg-server/hw/xwin/winwindowswm.c xorg-server/hw/xwin/winwndproc.c xorg-server/include/callback.h xorg-server/include/dixstruct.h xorg-server/include/misc.h xorg-server/include/os.h xorg-server/include/scrnintstr.h xorg-server/mi/micmap.c xorg-server/mi/miinitext.c xorg-server/mi/mioverlay.c xorg-server/mi/misprite.c xorg-server/mi/mivaltree.c xorg-server/mi/miwindow.c xorg-server/miext/damage/damage.c xorg-server/miext/rootless/rootlessGC.c xorg-server/miext/rootless/rootlessWindow.c xorg-server/os/WaitFor.c xorg-server/os/access.c xorg-server/os/connection.c xorg-server/os/io.c xorg-server/os/log.c xorg-server/os/osinit.c xorg-server/os/utils.c xorg-server/os/xdmcp.c xorg-server/os/xprintf.c xorg-server/os/xstrans.c xorg-server/render/mipict.c xorg-server/xkb/xkbActions.c xorg-server/xkb/xkbInit.c xorg-server/xkeyboard-config/compat/default.in
Diffstat (limited to 'xorg-server/doc/dtrace/Xserver-DTrace.xml')
-rw-r--r--xorg-server/doc/dtrace/Xserver-DTrace.xml153
1 files changed, 151 insertions, 2 deletions
diff --git a/xorg-server/doc/dtrace/Xserver-DTrace.xml b/xorg-server/doc/dtrace/Xserver-DTrace.xml
index 5ef062980..91ca254d7 100644
--- a/xorg-server/doc/dtrace/Xserver-DTrace.xml
+++ b/xorg-server/doc/dtrace/Xserver-DTrace.xml
@@ -52,7 +52,9 @@ DEALINGS IN THE SOFTWARE.
facility in <productname>Solaris</productname> 10,
<productname>MacOS X</productname> 10.5, and later releases. This
provider instruments various points in the X server, to allow
- tracing what client applications are up to.
+ tracing what client applications are up to. DTrace probes may be used
+ with <ulink url="http://sourceware.org/systemtap/">SystemTap</ulink>
+ on GNU/Linux systems.
</para>
<para>
@@ -81,7 +83,7 @@ DEALINGS IN THE SOFTWARE.
<table id="Probes_and_their_arguments">
<title>Probes and their arguments</title>
- <tgroup cols='7'>
+ <tgroup cols='9'>
<colspec colname="probe" colwidth="2*"/>
<colspec colname="desc" colwidth="3*"/>
<colspec colname="arg0" colwidth="1*"/>
@@ -89,6 +91,8 @@ DEALINGS IN THE SOFTWARE.
<colspec colname="arg2" colwidth="1*"/>
<colspec colname="arg3" colwidth="1*"/>
<colspec colname="arg4" colwidth="1*"/>
+ <colspec colname="arg5" colwidth="1*"/>
+ <colspec colname="arg6" colwidth="1*"/>
<spanspec spanname="all" namest="probe" nameend="arg4"/>
<thead>
<row>
@@ -99,6 +103,8 @@ DEALINGS IN THE SOFTWARE.
<entry>arg2</entry>
<entry>arg3</entry>
<entry>arg4</entry>
+ <entry>arg5</entry>
+ <entry>arg6</entry>
</row>
</thead>
<tbody>
@@ -113,6 +119,8 @@ DEALINGS IN THE SOFTWARE.
<entry><parameter>requestLength</parameter></entry>
<entry><parameter>clientId</parameter></entry>
<entry><parameter>requestBuffer</parameter></entry>
+ <entry nameend="arg5" class="unused"/>
+ <entry nameend="arg6" class="unused"/>
</row>
<row>
<entry>request-done</entry>
@@ -122,6 +130,8 @@ DEALINGS IN THE SOFTWARE.
<entry><parameter>sequenceNumber</parameter></entry>
<entry><parameter>clientId</parameter></entry>
<entry><parameter>resultCode</parameter></entry>
+ <entry nameend="arg5" class="unused"/>
+ <entry nameend="arg6" class="unused"/>
</row>
<row>
<entry spanname="all" class="grouphead">Event Probes</entry>
@@ -132,7 +142,10 @@ DEALINGS IN THE SOFTWARE.
<entry><parameter>clientId</parameter></entry>
<entry><parameter>eventCode</parameter></entry>
<entry><parameter>eventBuffer</parameter></entry>
+ <entry nameend="arg3" class="unused"/>
<entry nameend="arg4" class="unused"/>
+ <entry nameend="arg5" class="unused"/>
+ <entry nameend="arg6" class="unused"/>
</row>
<row>
<entry spanname="all" class="grouphead">Client Connection Probes</entry>
@@ -142,7 +155,11 @@ DEALINGS IN THE SOFTWARE.
<entry>Called when a new connection is opened from a client</entry>
<entry><parameter>clientId</parameter></entry>
<entry><parameter>clientFD</parameter></entry>
+ <entry nameend="arg2" class="unused"/>
+ <entry nameend="arg3" class="unused"/>
<entry nameend="arg4" class="unused"/>
+ <entry nameend="arg5" class="unused"/>
+ <entry nameend="arg6" class="unused"/>
</row>
<row>
<entry>client-auth</entry>
@@ -152,12 +169,19 @@ DEALINGS IN THE SOFTWARE.
<entry><parameter>clientPid</parameter></entry>
<entry><parameter>clientZoneId</parameter></entry>
<entry nameend="arg4" class="unused"/>
+ <entry nameend="arg5" class="unused"/>
+ <entry nameend="arg6" class="unused"/>
</row>
<row>
<entry>client-disconnect</entry>
<entry>Called when a client connection is closed</entry>
<entry><parameter>clientId</parameter></entry>
+ <entry nameend="arg1" class="unused"/>
+ <entry nameend="arg2" class="unused"/>
+ <entry nameend="arg3" class="unused"/>
<entry nameend="arg4" class="unused"/>
+ <entry nameend="arg5" class="unused"/>
+ <entry nameend="arg6" class="unused"/>
</row>
<row>
<entry spanname="all" class="grouphead">Resource Allocation Probes</entry>
@@ -170,6 +194,8 @@ DEALINGS IN THE SOFTWARE.
<entry><parameter>resourceValue</parameter></entry>
<entry><parameter>resourceTypeName</parameter></entry>
<entry nameend="arg4" class="unused"/>
+ <entry nameend="arg5" class="unused"/>
+ <entry nameend="arg6" class="unused"/>
</row>
<row>
<entry>resource-free</entry>
@@ -179,6 +205,24 @@ DEALINGS IN THE SOFTWARE.
<entry><parameter>resourceValue</parameter></entry>
<entry><parameter>resourceTypeName</parameter></entry>
<entry nameend="arg4" class="unused"/>
+ <entry nameend="arg5" class="unused"/>
+ <entry nameend="arg6" class="unused"/>
+ </row>
+ <row>
+ <entry spanname="all" class="grouphead">Input API probes</entry>
+ </row>
+ <row>
+ <entry>input-event</entry>
+ <entry>Called when an input event was submitted for processing</entry>
+ <entry><parameter>deviceid</parameter></entry>
+ <entry><parameter>eventtype</parameter></entry>
+ <entry><parameter>button</parameter> or
+ <parameter>keycode</parameter> or
+ <parameter>touchid</parameter></entry>
+ <entry><parameter>flags</parameter></entry>
+ <entry><parameter>nvalues</parameter></entry>
+ <entry><parameter>mask</parameter></entry>
+ <entry><parameter>values</parameter></entry>
</row>
</tbody>
</tgroup>
@@ -304,6 +348,44 @@ DEALINGS IN THE SOFTWARE.
<entry><type>uint32_t</type></entry>
<entry>Number of X request in in this connection</entry>
</row>
+ <row>
+ <entry><parameter>deviceid</parameter></entry>
+ <entry><type>int</type></entry>
+ <entry>The device's numerical ID</entry>
+ </row>
+ <row>
+ <entry><parameter>eventtype</parameter></entry>
+ <entry><type>int</type></entry>
+ <entry>Protocol event type</entry>
+ </row>
+ <row>
+ <entry><parameter>button, keycode, touchid</parameter></entry>
+ <entry><type>uint32_t</type></entry>
+ <entry>The button number, keycode or touch ID</entry>
+ </row>
+ <row>
+ <entry><parameter>flags</parameter></entry>
+ <entry><type>uint32_t</type></entry>
+ <entry>Miscellaneous event-specific server flags</entry>
+ </row>
+ <row>
+ <entry><parameter>nvalues</parameter></entry>
+ <entry><type>int8_t</type></entry>
+ <entry>Number of bits in <parameter>mask</parameter> and number of elements
+ in <parameter>values</parameter></entry>
+ </row>
+ <row>
+ <entry><parameter>mask</parameter></entry>
+ <entry><type>uint8_t*</type></entry>
+ <entry>Binary mask indicating which indices in <parameter>values</parameter> contain
+ valid data</entry>
+ </row>
+ <row>
+ <entry><parameter>values</parameter></entry>
+ <entry><type>double*</type></entry>
+ <entry>Valuator values. Values for indices for which the
+ <parameter>mask</parameter> is not set are undefined</entry>
+ </row>
</tbody>
</tgroup>
</table>
@@ -572,6 +654,73 @@ Xserver$1:::client-disconnect
</example>
+ <example id="Input_API_monitoring_with_systemtap">
+ <title>Input API monitoring with SystemTap</title>
+
+ <para>
+ This script can be used to monitor events submitted by drivers to
+ the server for enqueuing. Due to the integration of the input API
+ probes, some server-enqueued events will show up too.
+ <programlisting>
+ # Compile+run with
+ # stap -g xorg.stp /usr/bin/Xorg
+ #
+
+
+ function print_valuators:string(nvaluators:long, mask_in:long, valuators_in:long) %{
+ int i;
+ unsigned char *mask = (unsigned char*)THIS->mask_in;
+ double *valuators = (double*)THIS->valuators_in;
+ char str[128] = {0};
+ char *s = str;
+
+ #define BitIsSet(ptr, bit) (((unsigned char*)(ptr))[(bit)>>3] &amp; (1 &lt;&lt; ((bit) &amp; 7)))
+
+ s += sprintf(s, "nval: %d ::", (int)THIS->nvaluators);
+ for (i = 0; i &lt; THIS->nvaluators; i++)
+ {
+ s += sprintf(s, " %d: ", i);
+ if (BitIsSet(mask, i))
+ s += sprintf(s, "%d", (int)valuators[i]);
+ }
+
+ sprintf(THIS->__retvalue, "%s", str);
+ %}
+
+ probe process(@1).mark("input__event")
+ {
+ deviceid = $arg1
+ type = $arg2
+ detail = $arg3
+ flags = $arg4
+ nvaluators = $arg5
+
+ str = print_valuators(nvaluators, $arg6, $arg7)
+ printf("Event: device %d type %d detail %d flags %#x %s\n",
+ deviceid, type, detail, flags, str);
+ }
+ </programlisting>
+
+ Sample output from a run of this script:
+ <screen><computeroutput>
+Event: device 13 type 4 detail 1 flags 0x0 nval: 0 ::
+Event: device 13 type 6 detail 0 flags 0xa nval: 1 :: 0: 1
+Event: device 13 type 6 detail 0 flags 0xa nval: 2 :: 0: 2 1: -1
+Event: device 13 type 6 detail 0 flags 0xa nval: 2 :: 0: 2 1: -1
+Event: device 13 type 6 detail 0 flags 0xa nval: 2 :: 0: 4 1: -3
+Event: device 13 type 6 detail 0 flags 0xa nval: 2 :: 0: 3 1: -3
+Event: device 13 type 6 detail 0 flags 0xa nval: 2 :: 0: 3 1: -2
+Event: device 13 type 6 detail 0 flags 0xa nval: 2 :: 0: 2 1: -2
+Event: device 13 type 6 detail 0 flags 0xa nval: 2 :: 0: 2 1: -2
+Event: device 13 type 6 detail 0 flags 0xa nval: 2 :: 0: 2 1: -2
+Event: device 13 type 6 detail 0 flags 0xa nval: 2 :: 0: 1: -1
+Event: device 13 type 6 detail 0 flags 0xa nval: 2 :: 0: 1: -1
+Event: device 13 type 5 detail 1 flags 0x0 nval: 0 ::
+ </computeroutput></screen>
+
+ </para>
+
+ </example>
</sect1>