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