xserver: Branch 'master' - 4 commits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Aug 28 18:01:27 UTC 2019


 dix/.gitignore          |    1 
 dix/Makefile.am         |   18 +-------
 dix/Xserver-dtrace.h.in |   99 ------------------------------------------------
 dix/getevents.c         |    8 +--
 dix/meson.build         |   14 ++++++
 include/.gitignore      |    1 
 include/Makefile.am     |   10 ++++
 include/meson.build     |   13 +++++-
 include/probes.h        |    4 -
 meson.build             |    5 ++
 meson_options.txt       |    3 +
 os/Makefile.am          |    4 -
 os/meson.build          |    1 
 13 files changed, 56 insertions(+), 125 deletions(-)

New commits:
commit 7d0e660e0e2808e098ab9d4de843e9b31c64af21
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Aug 27 15:54:42 2019 -0400

    meson: Add dtrace support

diff --git a/dix/meson.build b/dix/meson.build
index 0ed4f8210..ddc5cc392 100644
--- a/dix/meson.build
+++ b/dix/meson.build
@@ -33,10 +33,22 @@ srcs_dix = [
     'window.c',
 ]
 
+dtrace_src = []
+if with_dtrace
+    dtrace_object = generator(dtrace,
+        output: '@BASENAME at .o',
+        arguments: ['-G', '-s', '@INPUT@', '-o', '@OUTPUT@']
+    )
+
+    dtrace_src += dtrace_object.process(dtrace_tmpl)
+endif
+
+dtrace_dep = declare_dependency(sources: [dtrace_src, dtrace_hdr])
+
 libxserver_dix = static_library('libxserver_dix',
     srcs_dix,
     include_directories: inc,
-    dependencies: common_dep,
+    dependencies: [ dtrace_dep, common_dep, ]
 )
 
 libxserver_main = static_library('libxserver_main',
diff --git a/include/meson.build b/include/meson.build
index 3c72e5bbb..bb89493e1 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -31,7 +31,7 @@ cc.compiles('''
 ''',
     name: 'CLOCK_MONOTONIC'))
 
-#conf_data.set('XSERVER_DTRACE', '1') # XXX
+conf_data.set('XSERVER_DTRACE', with_dtrace)
 
 if host_machine.endian() == 'little'
     conf_data.set('X_BYTE_ORDER', 'X_LITTLE_ENDIAN')
@@ -402,6 +402,17 @@ configure_file(output : 'xwayland-config.h',
                input : 'xwayland-config.h.meson.in',
                configuration : xwayland_data)
 
+dtrace_hdr = []
+dtrace_tmpl = files('Xserver.d')
+if with_dtrace
+    dtrace_header = generator(dtrace,
+        output: '@BASENAME at -dtrace.h',
+        arguments: ['-h', '-s', '@INPUT@', '-o', '@OUTPUT@']
+    )
+
+    dtrace_hdr += dtrace_header.process(dtrace_tmpl)
+endif
+
 if build_xorg
     install_data(
         [
diff --git a/meson.build b/meson.build
index def32e9b9..00a7e3c86 100644
--- a/meson.build
+++ b/meson.build
@@ -175,6 +175,11 @@ else
     build_systemd_logind = get_option('systemd_logind') == 'true'
 endif
 
+with_dtrace = get_option('dtrace')
+if with_dtrace
+    dtrace = find_program('dtrace', required: true)
+endif
+
 build_xorg = false
 if (host_machine.system() != 'darwin' and
     host_machine.system() != 'windows')
diff --git a/meson_options.txt b/meson_options.txt
index 7d3bbe535..94a782a92 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -50,6 +50,9 @@ option('vendor_name', type: 'string', value: 'The X.Org Foundation')
 option('vendor_name_short', type: 'string', value: 'X.Org')
 option('vendor_web', type: 'string', value: 'http://wiki.x.org')
 
+option('dtrace', type: 'boolean', value: false,
+       description: 'Enable dtrace hooks')
+
 option('listen_tcp', type: 'boolean', value: false,
        description: 'Listen on TCP by default')
 option('listen_unix', type: 'boolean', value: true,
diff --git a/os/meson.build b/os/meson.build
index 39440a7c3..337306bcd 100644
--- a/os/meson.build
+++ b/os/meson.build
@@ -91,6 +91,7 @@ libxserver_os = static_library('libxserver_os',
     srcs_os,
     include_directories: inc,
     dependencies: [
+        dtrace_dep,
         common_dep,
         dl_dep,
         sha1_dep,
commit e0e051a3920e3e2731d35807e00d30ba9ef7f122
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Aug 27 15:50:23 2019 -0400

    dtrace: s/#if/#ifdef/ for XSERVER_DTRACE
    
    No functional change, matches meson style.

diff --git a/dix/getevents.c b/dix/getevents.c
index f83dac709..f784c68d5 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -1071,7 +1071,7 @@ GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
     RawDeviceEvent *raw;
     enum DeviceEventSource source_type = EVENT_SOURCE_NORMAL;
 
-#if XSERVER_DTRACE
+#ifdef XSERVER_DTRACE
     if (XSERVER_INPUT_EVENT_ENABLED()) {
         XSERVER_INPUT_EVENT(pDev->id, type, key_code, 0, 0,
                             NULL, NULL);
@@ -1615,7 +1615,7 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
     int i;
     int realtype = type;
 
-#if XSERVER_DTRACE
+#ifdef XSERVER_DTRACE
     if (XSERVER_INPUT_EVENT_ENABLED()) {
         XSERVER_INPUT_EVENT(pDev->id, type, buttons, flags,
                             mask_in ? mask_in->last_bit + 1 : 0,
@@ -1755,7 +1755,7 @@ GetProximityEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
     DeviceEvent *event;
     ValuatorMask mask;
 
-#if XSERVER_DTRACE
+#ifdef XSERVER_DTRACE
     if (XSERVER_INPUT_EVENT_ENABLED()) {
         XSERVER_INPUT_EVENT(pDev->id, type, 0, 0,
                             mask_in ? mask_in->last_bit + 1 : 0,
@@ -1885,7 +1885,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid,
     Bool emulate_pointer = FALSE;
     int client_id = 0;
 
-#if XSERVER_DTRACE
+#ifdef XSERVER_DTRACE
     if (XSERVER_INPUT_EVENT_ENABLED()) {
         XSERVER_INPUT_EVENT(dev->id, type, ddx_touchid, flags,
                             mask_in ? mask_in->last_bit + 1 : 0,
diff --git a/include/probes.h b/include/probes.h
index 879bddfe5..f2ed40fe3 100644
--- a/include/probes.h
+++ b/include/probes.h
@@ -30,7 +30,7 @@
 
 /* definitions needed to include Dtrace probes in a source file */
 
-#if XSERVER_DTRACE
+#ifdef XSERVER_DTRACE
 #include <sys/types.h>
 typedef const char *string;
 typedef const uint8_t *const_uint8_p;
commit 7968d10fadd37eabd811481e1d47fe01706269f3
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Aug 27 15:48:59 2019 -0400

    dtrace: Move Xserver.d from dix/ to include/
    
    dix/ is typically not in the include path, and this properly belongs in
    include anyway since it's needed from os/ too.

diff --git a/dix/.gitignore b/dix/.gitignore
index 65f2f8c62..f149fffc6 100644
--- a/dix/.gitignore
+++ b/dix/.gitignore
@@ -1,3 +1,2 @@
 #		Add & Override for this directory and it's subdirectories
-Xserver-dtrace.h
 dix.O
diff --git a/dix/Makefile.am b/dix/Makefile.am
index c3ef2a57d..652a08519 100644
--- a/dix/Makefile.am
+++ b/dix/Makefile.am
@@ -42,24 +42,16 @@ libdix_la_SOURCES = 	\
 	touch.c		\
 	window.c
 
-EXTRA_DIST = buildatoms BuiltInAtoms Xserver.d
+EXTRA_DIST = buildatoms BuiltInAtoms
 
 # Install list of protocol names
 miscconfigdir = $(SERVER_MISC_CONFIG_PATH)
 dist_miscconfig_DATA = protocol.txt
 
-if XSERVER_DTRACE
-# Generate dtrace header file for C sources to include
-BUILT_SOURCES = Xserver-dtrace.h
-
-Xserver-dtrace.h: $(srcdir)/Xserver.d
-	$(AM_V_GEN)$(DTRACE) -C -h -o $@ -s $(srcdir)/Xserver.d
-endif
-
 if SPECIAL_DTRACE_OBJECTS
 # Generate dtrace object code for probes in libdix
-dtrace-dix.o: $(top_srcdir)/dix/Xserver.d libdix.la
-	$(AM_V_GEN)$(DTRACE) -G -C -o $@ -s $(top_srcdir)/dix/Xserver.d $(am_libdix_la_OBJECTS:%.lo=.libs/%.o)
+dtrace-dix.o: $(top_srcdir)/include/Xserver.d libdix.la
+	$(AM_V_GEN)$(DTRACE) -G -C -o $@ -s $(top_srcdir)/include/Xserver.d $(am_libdix_la_OBJECTS:%.lo=.libs/%.o)
 
 noinst_PROGRAMS = dix.O
 
@@ -67,5 +59,3 @@ dix_O_SOURCES =
 dix.O: dtrace-dix.o libdix.la
 	$(AM_V_GEN)ld -r -o $@ $(am_libdix_la_OBJECTS:%.lo=.libs/%.o)
 endif
-
-CLEANFILES = Xserver-dtrace.h
diff --git a/include/.gitignore b/include/.gitignore
index dc9067ab3..8cb149114 100644
--- a/include/.gitignore
+++ b/include/.gitignore
@@ -2,4 +2,5 @@
 *-config.h
 do-not-use-config.h.in
 xorg-server.h
+Xserver-dtrace.h
 
diff --git a/include/Makefile.am b/include/Makefile.am
index 9c22ce113..c52734cf0 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -84,3 +84,13 @@ EXTRA_DIST = 	\
 	xwayland-config.h.meson.in \
 	xwin-config.h.meson.in \
 	xsha1.h
+
+if XSERVER_DTRACE
+# Generate dtrace header file for C sources to include
+BUILT_SOURCES = Xserver-dtrace.h
+
+Xserver-dtrace.h: $(srcdir)/Xserver.d
+	$(AM_V_GEN)$(DTRACE) -C -h -o $@ -s $(srcdir)/Xserver.d
+endif
+
+CLEANFILES = Xserver-dtrace.h
diff --git a/dix/Xserver.d b/include/Xserver.d
similarity index 100%
rename from dix/Xserver.d
rename to include/Xserver.d
diff --git a/include/probes.h b/include/probes.h
index e9cdd3e8e..879bddfe5 100644
--- a/include/probes.h
+++ b/include/probes.h
@@ -35,7 +35,7 @@
 typedef const char *string;
 typedef const uint8_t *const_uint8_p;
 typedef const double *const_double_p;
-#include "../dix/Xserver-dtrace.h"
+#include "Xserver-dtrace.h"
 #endif
 
 #endif /* XORG_PROBES_H */
diff --git a/os/Makefile.am b/os/Makefile.am
index c6e78cb99..30f516cfa 100644
--- a/os/Makefile.am
+++ b/os/Makefile.am
@@ -58,8 +58,8 @@ EXTRA_DIST = $(SECURERPC_SRCS) $(XDMCP_SRCS)
 
 if SPECIAL_DTRACE_OBJECTS
 # Generate dtrace object code for probes in libos & libdix
-dtrace.o: $(top_srcdir)/dix/Xserver.d libos.la
-	$(AM_V_GEN)$(DTRACE) -G -C -o $@ -s $(top_srcdir)/dix/Xserver.d .libs/*.o ../dix/.libs/*.o
+dtrace.o: $(top_srcdir)/include/Xserver.d libos.la
+	$(AM_V_GEN)$(DTRACE) -G -C -o $@ -s $(top_srcdir)/include/Xserver.d .libs/*.o ../dix/.libs/*.o
 
 noinst_PROGRAMS = os.O
 
commit 4fa43fc5134bedf50904ec634f9a63d0570b0827
Author: Adam Jackson <ajax at redhat.com>
Date:   Tue Aug 27 15:43:50 2019 -0400

    dtrace: Remove Xserver-dtrace.h.in hack
    
    This was a workaround for very old versions of dtrace(1) that didn't
    support the -h switch. We no longer support such old OSes.

diff --git a/dix/Makefile.am b/dix/Makefile.am
index b96da08f9..c3ef2a57d 100644
--- a/dix/Makefile.am
+++ b/dix/Makefile.am
@@ -42,7 +42,7 @@ libdix_la_SOURCES = 	\
 	touch.c		\
 	window.c
 
-EXTRA_DIST = buildatoms BuiltInAtoms Xserver.d Xserver-dtrace.h.in
+EXTRA_DIST = buildatoms BuiltInAtoms Xserver.d
 
 # Install list of protocol names
 miscconfigdir = $(SERVER_MISC_CONFIG_PATH)
@@ -53,9 +53,7 @@ if XSERVER_DTRACE
 BUILT_SOURCES = Xserver-dtrace.h
 
 Xserver-dtrace.h: $(srcdir)/Xserver.d
-	$(AM_V_GEN)$(DTRACE) -C -h -o $@ -s $(srcdir)/Xserver.d \
-		|| cp Xserver-dtrace.h.in $@
-
+	$(AM_V_GEN)$(DTRACE) -C -h -o $@ -s $(srcdir)/Xserver.d
 endif
 
 if SPECIAL_DTRACE_OBJECTS
diff --git a/dix/Xserver-dtrace.h.in b/dix/Xserver-dtrace.h.in
deleted file mode 100644
index 60ebbcdd9..000000000
--- a/dix/Xserver-dtrace.h.in
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */ 
-
-/*
- * Generated by dtrace(1M), and then modified for backwards compatibility
- * with older versions of dtrace.   Used if dtrace -h fails.
- * (Since _ENABLED support was added after dtrace -h, this  assumes if 
- *  dtrace -h fails, _ENABLED will too.)
- */
-
-#ifndef	_XSERVER_DTRACE_H
-#define	_XSERVER_DTRACE_H
-
-#include <unistd.h>
-
-#ifdef	__cplusplus
-extern "C" {
-#endif
-
-#if _DTRACE_VERSION
-
-#define	XSERVER_CLIENT_AUTH(arg0, arg1, arg2, arg3) \
-	__dtrace_Xserver___client__auth(arg0, arg1, arg2, arg3)
-#define	XSERVER_CLIENT_CONNECT(arg0, arg1) \
-	__dtrace_Xserver___client__connect(arg0, arg1)
-#define	XSERVER_CLIENT_DISCONNECT(arg0) \
-	__dtrace_Xserver___client__disconnect(arg0)
-#define	XSERVER_REQUEST_DONE(arg0, arg1, arg2, arg3, arg4) \
-	__dtrace_Xserver___request__done(arg0, arg1, arg2, arg3, arg4)
-#define	XSERVER_REQUEST_START(arg0, arg1, arg2, arg3, arg4) \
-	__dtrace_Xserver___request__start(arg0, arg1, arg2, arg3, arg4)
-#define	XSERVER_RESOURCE_ALLOC(arg0, arg1, arg2, arg3) \
-	__dtrace_Xserver___resource__alloc(arg0, arg1, arg2, arg3)
-#define	XSERVER_RESOURCE_FREE(arg0, arg1, arg2, arg3) \
-	__dtrace_Xserver___resource__free(arg0, arg1, arg2, arg3)
-#define	XSERVER_SEND_EVENT(arg0, arg1, arg2) \
-	__dtrace_Xserver___send__event(arg0, arg1, arg2)
-#define	XSERVER_INPUT_EVENT(arg0, arg1, arg2, arg3, arg4, arg5, arg6) \
-	__dtrace_Xserver___input__event(arg0, arg1, arg2, arg3, arg4, arg5, arg6)
-
-extern void __dtrace_Xserver___client__auth(int, string, pid_t, zoneid_t);
-extern void __dtrace_Xserver___client__connect(int, int);
-extern void __dtrace_Xserver___client__disconnect(int);
-extern void __dtrace_Xserver___request__done(string, uint8_t, uint32_t, int, int);
-extern void __dtrace_Xserver___request__start(string, uint8_t, uint16_t, int, void *);
-extern void __dtrace_Xserver___resource__alloc(uint32_t, uint32_t, void *, string);
-extern void __dtrace_Xserver___resource__free(uint32_t, uint32_t, void *, string);
-extern void __dtrace_Xserver___send__event(int, uint8_t, void *);
-extern void __dtrace_Xserver___input__event(int, uint16_t, uint32_t, uint32_t, int8_t, uint8_t *, double *);
-
-
-#else
-
-#define	XSERVER_CLIENT_AUTH(arg0, arg1, arg2, arg3)
-#define	XSERVER_CLIENT_CONNECT(arg0, arg1)
-#define	XSERVER_CLIENT_DISCONNECT(arg0)
-#define	XSERVER_REQUEST_DONE(arg0, arg1, arg2, arg3, arg4)
-#define	XSERVER_REQUEST_START(arg0, arg1, arg2, arg3, arg4)
-#define	XSERVER_RESOURCE_ALLOC(arg0, arg1, arg2, arg3)
-#define	XSERVER_RESOURCE_FREE(arg0, arg1, arg2, arg3)
-#define	XSERVER_SEND_EVENT(arg0, arg1, arg2)
-#define	XSERVER_INPUT_EVENT(arg0, arg1, arg2, arg3, arg4, arg5, arg6)
-
-#endif
-
-#define	XSERVER_CLIENT_AUTH_ENABLED() (1)
-#define	XSERVER_CLIENT_CONNECT_ENABLED() (1)
-#define	XSERVER_CLIENT_DISCONNECT_ENABLED() (1)
-#define	XSERVER_REQUEST_DONE_ENABLED() (1)
-#define	XSERVER_REQUEST_START_ENABLED() (1)
-#define	XSERVER_RESOURCE_ALLOC_ENABLED() (1)
-#define	XSERVER_RESOURCE_FREE_ENABLED() (1)
-#define	XSERVER_SEND_EVENT_ENABLED() (1)
-#define	XSERVER_INPUT_EVENT_ENABLED() (1)
-
-#ifdef	__cplusplus
-}
-#endif
-
-#endif	/* _XSERVER_DTRACE_H */


More information about the xorg-commit mailing list