]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
Split QEMU dtrace probes into separate file
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 2 Apr 2012 17:24:29 +0000 (18:24 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 24 May 2012 12:18:01 +0000 (13:18 +0100)
When building as driver modules, it is not possible for the QEMU
driver module to reference the DTrace/SystemTAP probes linked into
the main libvirt.so. Thus we need to move the QEMU probes into a
separate file 'libvirt_qemu_probes.d'. Also rename the existing
file from 'probes.d' to 'libvirt_probes.d' while we're at it

* daemon/Makefile.am, src/internal.h: Include libvirt_probes.h
  instead of probes.h
* src/Makefile.am: Add rules for libvirt_qemu_probes.d
* src/qemu/qemu_monitor.c, src/qemu/qemu_monitor_json.c,
  src/qemu/qemu_monitor_text.c: Include libvirt_qemu_probes.h
* src/libvirt_probes.d: Rename from probes.d
* src/libvirt_qemu_probes.d: QEMU specific probes formerly
  in probes.d

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
daemon/Makefile.am
src/Makefile.am
src/internal.h
src/libvirt_probes.d [new file with mode: 0644]
src/libvirt_qemu_probes.d [new file with mode: 0644]
src/probes.d [deleted file]
src/qemu/qemu_monitor.c
src/qemu/qemu_monitor_json.c
src/qemu/qemu_monitor_text.c
tests/Makefile.am

index 24cce8f86208b5abc1820685758152c656d7cfb5..5d4c1a7711e0ddf2fc786f5460d0b3edbe5ae33c 100644 (file)
@@ -112,7 +112,7 @@ libvirtd_LDADD =                                    \
        $(POLKIT_LIBS)
 
 if WITH_DTRACE_PROBES
-libvirtd_LDADD += ../src/probes.o
+libvirtd_LDADD += ../src/libvirt_probes.o
 endif
 
 libvirtd_LDADD += \
@@ -121,6 +121,9 @@ libvirtd_LDADD += \
 if ! WITH_DRIVER_MODULES
 if WITH_QEMU
     libvirtd_LDADD += ../src/libvirt_driver_qemu.la
+if WITH_DTRACE_PROBES
+    libvirtd_LDADD += ../src/libvirt_qemu_probes.o
+endif
 endif
 
 if WITH_LXC
index 5259ff0081d8a7c49975a2f4631460987b591ae8..bdb0ef485bb8381033b53920de537ed0bd0e131a 100644 (file)
@@ -1246,22 +1246,30 @@ libvirt_la_CFLAGS = -DIN_LIBVIRT $(AM_CFLAGS)
 libvirt_la_DEPENDENCIES = $(libvirt_la_BUILT_LIBADD) $(LIBVIRT_SYMBOL_FILE)
 
 if WITH_DTRACE_PROBES
-libvirt_la_BUILT_LIBADD += probes.o
-libvirt_la_DEPENDENCIES += probes.o
-nodist_libvirt_la_SOURCES = probes.h
+libvirt_la_BUILT_LIBADD += libvirt_probes.o
+libvirt_la_DEPENDENCIES += libvirt_probes.o
+nodist_libvirt_la_SOURCES = libvirt_probes.h
 if WITH_REMOTE
-$(REMOTE_DRIVER_GENERATED): probes.h
+$(REMOTE_DRIVER_GENERATED): libvirt_probes.h
 endif WITH_REMOTE
 
-BUILT_SOURCES += probes.h libvirt_probes.stp libvirt_functions.stp
+BUILT_SOURCES += libvirt_probes.h libvirt_probes.stp libvirt_functions.stp
+
+if WITH_QEMU
+libvirt_driver_qemu_la_LIBADD += libvirt_qemu_probes.o
+nodist_libvirt_driver_qemu_la_SOURCES = libvirt_qemu_probes.h
+libvirt_driver_qemu_la_DEPENDENCIES = libvirt_qemu_probes.o
+
+$(libvirt_driver_qemu_la_SOURCES): libvirt_qemu_probes.h
+endif
 
 tapsetdir = $(datadir)/systemtap/tapset
-tapset_DATA = libvirt_probes.stp libvirt_functions.stp
+tapset_DATA = libvirt_probes.stp libvirt_qemu_probes.stp libvirt_functions.stp
 
-probes.h: probes.d
+%_probes.h: %_probes.d
        $(AM_V_GEN)$(DTRACE) -o $@ -h -s $<
 
-probes.o: probes.d
+%_probes.o: %_probes.d
        $(AM_V_GEN)$(DTRACE) -o $@ -G -s $<
 
 RPC_PROBE_FILES = $(srcdir)/rpc/virnetprotocol.x \
@@ -1272,13 +1280,19 @@ RPC_PROBE_FILES = $(srcdir)/rpc/virnetprotocol.x \
 libvirt_functions.stp: $(RPC_PROBE_FILES) $(srcdir)/rpc/gensystemtap.pl
        $(AM_V_GEN)perl -w $(srcdir)/rpc/gensystemtap.pl $(RPC_PROBE_FILES) > $@
 
-libvirt_probes.stp: probes.d $(srcdir)/dtrace2systemtap.pl
+libvirt_probes.stp: libvirt_probes.d $(srcdir)/dtrace2systemtap.pl
+       $(AM_V_GEN)perl -w $(srcdir)/dtrace2systemtap.pl $(bindir) $(sbindir) $(libdir) $< > $@
+
+libvirt_qemu_probes.stp: libvirt_qemu_probes.d $(srcdir)/dtrace2systemtap.pl
        $(AM_V_GEN)perl -w $(srcdir)/dtrace2systemtap.pl $(bindir) $(sbindir) $(libdir) $< > $@
 
-CLEANFILES += probes.h probes.o libvirt_functions.stp libvirt_probes.stp
+CLEANFILES += libvirt_probes.h libvirt_probes.o \
+              libvirt_qemu_probes.h libvirt_qemu_probes.o \
+              libvirt_functions.stp libvirt_probes.stp \
+              libvirt_qemu_probes.stp
 endif
 
-EXTRA_DIST += probes.d
+EXTRA_DIST += libvirt_probes.d libvirt_qemu_probes.d
 
 libvirt_qemu_la_SOURCES = libvirt-qemu.c
 libvirt_qemu_la_LDFLAGS = $(VERSION_SCRIPT_FLAGS)$(LIBVIRT_QEMU_SYMBOL_FILE) \
@@ -1465,7 +1479,7 @@ libvirt_lxc_LDADD = $(CAPNG_LIBS) $(YAJL_LIBS) \
                $(RT_LIBS) $(DBUS_LIBS) \
                ../gnulib/lib/libgnu.la
 if WITH_DTRACE_PROBES
-libvirt_lxc_LDADD += probes.o
+libvirt_lxc_LDADD += libvirt_probes.o
 endif
 if WITH_SECDRIVER_SELINUX
 libvirt_lxc_LDADD += $(SELINUX_LIBS)
@@ -1510,7 +1524,7 @@ virt_aa_helper_LDADD =                                            \
                libvirt_util.la                                 \
                ../gnulib/lib/libgnu.la
 if WITH_DTRACE_PROBES
-virt_aa_helper_LDADD += probes.o
+virt_aa_helper_LDADD += libvirt_probes.o
 endif
 virt_aa_helper_CFLAGS =                                                \
                -I$(top_srcdir)/src/conf                        \
index 83f468db43ad423c4d66003008b6e6d049b2edd5..d13847a96fd1bc18554b90f8d9c219cfe642d799 100644 (file)
 # if WITH_DTRACE_PROBES
 #  ifndef LIBVIRT_PROBES_H
 #   define LIBVIRT_PROBES_H
-#   include "probes.h"
+#   include "libvirt_probes.h"
 #  endif /* LIBVIRT_PROBES_H */
 
 /* Systemtap 1.2 headers have a bug where they cannot handle a
diff --git a/src/libvirt_probes.d b/src/libvirt_probes.d
new file mode 100644 (file)
index 0000000..ac6c546
--- /dev/null
@@ -0,0 +1,85 @@
+provider libvirt {
+       # file: src/util/event_poll.c
+       # prefix: event_poll
+       probe event_poll_add_handle(int watch, int fd, int events, void *cb, void *opaque, void *ff);
+       probe event_poll_update_handle(int watch, int events);
+       probe event_poll_remove_handle(int watch);
+       probe event_poll_dispatch_handle(int watch, int events);
+       probe event_poll_purge_handle(int watch);
+
+       probe event_poll_add_timeout(int timer, int frequency, void *cb, void *opaque, void *ff);
+       probe event_poll_update_timeout(int timer, int frequency);
+       probe event_poll_remove_timeout(int timer);
+       probe event_poll_dispatch_timeout(int timer);
+       probe event_poll_purge_timeout(int timer);
+
+       probe event_poll_run(int nfds, int timeout);
+
+
+       # file: src/rpc/virnetsocket.c
+       # prefix: rpc
+       probe rpc_socket_new(void *sock, int refs, int fd, int errfd, pid_t pid, const char *localAddr, const char *remoteAddr);
+       probe rpc_socket_send_fd(void *sock, int fd);
+       probe rpc_socket_recv_fd(void *sock, int fd);
+       probe rpc_socket_ref(void *sock, int refs);
+       probe rpc_socket_free(void *sock, int refs);
+
+
+       # file: src/rpc/virnetserverclient.c
+       # prefix: rpc
+       probe rpc_server_client_new(void *client, int refs, void *sock);
+       probe rpc_server_client_ref(void *client, int refs);
+       probe rpc_server_client_free(void *client, int refs);
+
+       probe rpc_server_client_msg_tx_queue(void *client, int len, int prog, int vers, int proc, int type, int status, int serial);
+       probe rpc_server_client_msg_rx(void *client, int len, int prog, int vers, int proc, int type, int status, int serial);
+
+
+       # file: src/rpc/virnetclient.c
+       # prefix: rpc
+       probe rpc_client_new(void *client, int refs, void *sock);
+       probe rpc_client_ref(void *client, int refs);
+       probe rpc_client_free(void *client, int refs);
+
+       probe rpc_client_msg_tx_queue(void *client, int len, int prog, int vers, int proc, int type, int status, int serial);
+       probe rpc_client_msg_rx(void *client, int len, int prog, int vers, int proc, int type, int status, int serial);
+
+
+       # file: daemon/libvirtd.c
+       # prefix: rpc
+       probe rpc_server_client_auth_allow(void *client, int authtype, const char *identity);
+       probe rpc_server_client_auth_deny(void *client, int authtype, const char *identity);
+       probe rpc_server_client_auth_fail(void *client, int authtype);
+
+
+       # file: src/rpc/virnettlscontext.c
+       # prefix: rpc
+       probe rpc_tls_context_new(void *ctxt, int refs, const char *cacert, const char *cacrl,
+                                 const char *cert, const char *key, int sanityCheckCert, int requireValidCert, int isServer);
+       probe rpc_tls_context_ref(void *ctxt, int refs);
+       probe rpc_tls_context_free(void *ctxt, int refs);
+
+       probe rpc_tls_context_session_allow(void *ctxt, void *sess, const char *dname);
+       probe rpc_tls_context_session_deny(void *ctxt, void *sess, const char *dname);
+       probe rpc_tls_context_session_fail(void *ctxt, void *sess);
+
+
+       probe rpc_tls_session_new(void *sess, void *ctxt, int refs, const char *hostname, int isServer);
+       probe rpc_tls_session_ref(void *sess, int refs);
+       probe rpc_tls_session_free(void *sess, int refs);
+
+       probe rpc_tls_session_handshake_pass(void *sess);
+       probe rpc_tls_session_handshake_fail(void *sess);
+
+
+       # file: src/rpc/virkeepalive.c
+       # prefix: rpc
+       probe rpc_keepalive_new(void *ka, void *client, int refs);
+       probe rpc_keepalive_ref(void *ka, void *client, int refs);
+       probe rpc_keepalive_free(void *ka, void *client, int refs);
+       probe rpc_keepalive_start(void *ka, void *client, int interval, int count);
+       probe rpc_keepalive_stop(void *ka, void *client, bool all);
+       probe rpc_keepalive_send(void *ka, void *client, int prog, int vers, int proc);
+       probe rpc_keepalive_received(void *ka, void *client, int prog, int vers, int proc);
+       probe rpc_keepalive_timeout(void *ka, void *client, int coundToDeath, int idle);
+};
diff --git a/src/libvirt_qemu_probes.d b/src/libvirt_qemu_probes.d
new file mode 100644 (file)
index 0000000..6916778
--- /dev/null
@@ -0,0 +1,21 @@
+provider libvirt {
+        # file: src/qemu/qemu_monitor.c
+        # prefix: qemu
+        # binary: libvirtd
+        # Monitor lifecycle
+        probe qemu_monitor_new(void *mon, int refs, int fd);
+        probe qemu_monitor_ref(void *mon, int refs);
+        probe qemu_monitor_unref(void *mon, int refs);
+        probe qemu_monitor_close(void *monm, int refs);
+
+        # High level monitor message processing
+        probe qemu_monitor_send_msg(void *mon, const char *msg, int fd);
+        probe qemu_monitor_recv_reply(void *mon, const char *reply);
+        probe qemu_monitor_recv_event(void *mon, const char *event);
+
+        # Low level monitor I/O processing
+        probe qemu_monitor_io_process(void *mon, const char *buf, unsigned int len);
+        probe qemu_monitor_io_read(void *mon, const char *buf, unsigned int len, int ret, int errno);
+        probe qemu_monitor_io_write(void *mon, const char *buf, unsigned int len, int ret, int errno);
+        probe qemu_monitor_io_send_fd(void *mon, int fd, int ret, int errno);
+};
diff --git a/src/probes.d b/src/probes.d
deleted file mode 100644 (file)
index e56dc3e..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-provider libvirt {
-       # file: src/util/event_poll.c
-       # prefix: event_poll
-       probe event_poll_add_handle(int watch, int fd, int events, void *cb, void *opaque, void *ff);
-       probe event_poll_update_handle(int watch, int events);
-       probe event_poll_remove_handle(int watch);
-       probe event_poll_dispatch_handle(int watch, int events);
-       probe event_poll_purge_handle(int watch);
-
-       probe event_poll_add_timeout(int timer, int frequency, void *cb, void *opaque, void *ff);
-       probe event_poll_update_timeout(int timer, int frequency);
-       probe event_poll_remove_timeout(int timer);
-       probe event_poll_dispatch_timeout(int timer);
-       probe event_poll_purge_timeout(int timer);
-
-       probe event_poll_run(int nfds, int timeout);
-
-
-       # file: src/rpc/virnetsocket.c
-       # prefix: rpc
-       probe rpc_socket_new(void *sock, int refs, int fd, int errfd, pid_t pid, const char *localAddr, const char *remoteAddr);
-       probe rpc_socket_send_fd(void *sock, int fd);
-       probe rpc_socket_recv_fd(void *sock, int fd);
-       probe rpc_socket_ref(void *sock, int refs);
-       probe rpc_socket_free(void *sock, int refs);
-
-
-       # file: src/rpc/virnetserverclient.c
-       # prefix: rpc
-       probe rpc_server_client_new(void *client, int refs, void *sock);
-       probe rpc_server_client_ref(void *client, int refs);
-       probe rpc_server_client_free(void *client, int refs);
-
-       probe rpc_server_client_msg_tx_queue(void *client, int len, int prog, int vers, int proc, int type, int status, int serial);
-       probe rpc_server_client_msg_rx(void *client, int len, int prog, int vers, int proc, int type, int status, int serial);
-
-
-       # file: src/rpc/virnetclient.c
-       # prefix: rpc
-       probe rpc_client_new(void *client, int refs, void *sock);
-       probe rpc_client_ref(void *client, int refs);
-       probe rpc_client_free(void *client, int refs);
-
-       probe rpc_client_msg_tx_queue(void *client, int len, int prog, int vers, int proc, int type, int status, int serial);
-       probe rpc_client_msg_rx(void *client, int len, int prog, int vers, int proc, int type, int status, int serial);
-
-
-       # file: daemon/libvirtd.c
-       # prefix: rpc
-       probe rpc_server_client_auth_allow(void *client, int authtype, const char *identity);
-       probe rpc_server_client_auth_deny(void *client, int authtype, const char *identity);
-       probe rpc_server_client_auth_fail(void *client, int authtype);
-
-
-       # file: src/rpc/virnettlscontext.c
-       # prefix: rpc
-       probe rpc_tls_context_new(void *ctxt, int refs, const char *cacert, const char *cacrl,
-                                 const char *cert, const char *key, int sanityCheckCert, int requireValidCert, int isServer);
-       probe rpc_tls_context_ref(void *ctxt, int refs);
-       probe rpc_tls_context_free(void *ctxt, int refs);
-
-       probe rpc_tls_context_session_allow(void *ctxt, void *sess, const char *dname);
-       probe rpc_tls_context_session_deny(void *ctxt, void *sess, const char *dname);
-       probe rpc_tls_context_session_fail(void *ctxt, void *sess);
-
-
-       probe rpc_tls_session_new(void *sess, void *ctxt, int refs, const char *hostname, int isServer);
-       probe rpc_tls_session_ref(void *sess, int refs);
-       probe rpc_tls_session_free(void *sess, int refs);
-
-       probe rpc_tls_session_handshake_pass(void *sess);
-       probe rpc_tls_session_handshake_fail(void *sess);
-
-
-       # file: src/rpc/virkeepalive.c
-       # prefix: rpc
-       probe rpc_keepalive_new(void *ka, void *client, int refs);
-       probe rpc_keepalive_ref(void *ka, void *client, int refs);
-       probe rpc_keepalive_free(void *ka, void *client, int refs);
-       probe rpc_keepalive_start(void *ka, void *client, int interval, int count);
-       probe rpc_keepalive_stop(void *ka, void *client, bool all);
-       probe rpc_keepalive_send(void *ka, void *client, int prog, int vers, int proc);
-       probe rpc_keepalive_received(void *ka, void *client, int prog, int vers, int proc);
-       probe rpc_keepalive_timeout(void *ka, void *client, int coundToDeath, int idle);
-
-
-        # file: src/qemu/qemu_monitor.c
-        # prefix: qemu
-        # binary: libvirtd
-        # Monitor lifecycle
-        probe qemu_monitor_new(void *mon, int refs, int fd);
-        probe qemu_monitor_ref(void *mon, int refs);
-        probe qemu_monitor_unref(void *mon, int refs);
-        probe qemu_monitor_close(void *monm, int refs);
-
-        # High level monitor message processing
-        probe qemu_monitor_send_msg(void *mon, const char *msg, int fd);
-        probe qemu_monitor_recv_reply(void *mon, const char *reply);
-        probe qemu_monitor_recv_event(void *mon, const char *event);
-
-        # Low level monitor I/O processing
-        probe qemu_monitor_io_process(void *mon, const char *buf, unsigned int len);
-        probe qemu_monitor_io_read(void *mon, const char *buf, unsigned int len, int ret, int errno);
-        probe qemu_monitor_io_write(void *mon, const char *buf, unsigned int len, int ret, int errno);
-        probe qemu_monitor_io_send_fd(void *mon, int fd, int ret, int errno);
-};
index 7d69c679c234a9a8ca0a36b103ab4c0cd7b2f586..7084c68774c02b24da3122a8328b3a905529faf6 100644 (file)
 #include "logging.h"
 #include "virfile.h"
 
+#ifdef WITH_DTRACE_PROBES
+# include "libvirt_qemu_probes.h"
+#endif
+
 #define VIR_FROM_THIS VIR_FROM_QEMU
 
 #define DEBUG_IO 0
index e1f54532dacdf6f0685e4297aaec4790e5ee6123..90303479f596afbb2b9b8108b39ec1341fcfd362 100644 (file)
 #include "json.h"
 #include "ignore-value.h"
 
+#ifdef WITH_DTRACE_PROBES
+# include "libvirt_qemu_probes.h"
+#endif
+
 #define VIR_FROM_THIS VIR_FROM_QEMU
 
 
index 9e2991bb0f4e9c5b0febebd0206afed6174789e8..edb5dfde2e09aa594e788ca20e1eee69c697607e 100644 (file)
 #include "virterror_internal.h"
 #include "buf.h"
 
+#ifdef WITH_DTRACE_PROBES
+# include "libvirt_qemu_probes.h"
+#endif
+
 #define VIR_FROM_THIS VIR_FROM_QEMU
 
 #define QEMU_CMD_PROMPT "\n(qemu) "
index 6b1f95e140ae0ef3a58e26142a45c8bc8b3142ec..4575a563442077aaa7e10337dbf1efdb79c47a08 100644 (file)
@@ -31,7 +31,7 @@ endif
 
 PROBES_O =
 if WITH_DTRACE_PROBES
-PROBES_O += ../src/probes.o
+PROBES_O += ../src/libvirt_probes.o
 endif
 
 LDADDS = \
@@ -290,6 +290,9 @@ qemu_LDADDS = ../src/libvirt_driver_qemu.la
 if WITH_NETWORK
 qemu_LDADDS += ../src/libvirt_driver_network.la
 endif
+if WITH_DTRACE_PROBES
+qemu_LDADDS += ../src/libvirt_qemu_probes.o
+endif
 qemu_LDADDS += $(LDADDS)
 
 qemuxml2argvtest_SOURCES = \