Refactor state dump system
authorAntoine Busque <abusque@efficios.com>
Mon, 25 May 2015 23:12:30 +0000 (19:12 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 26 May 2015 18:30:02 +0000 (14:30 -0400)
This patch refactors the state dump system. The state dump provider is
now "lttng_ust_statedump". Each process' state dump is now delimited
by a pair of "start" and "end" events. These events mark the beginning
and end of the state dump, which happens once per traced application
per session. Note that for a given (process, session) pair, begin/end
events are serialized and will match. However, in a session, state
dumps from different processes may be interleaved. The vpid context
should be used to identify which events belong to which process.

Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
liblttng-ust/Makefile.am
liblttng-ust/lttng-events.c
liblttng-ust/lttng-ust-baddr.c [deleted file]
liblttng-ust/lttng-ust-baddr.h [deleted file]
liblttng-ust/lttng-ust-comm.c
liblttng-ust/lttng-ust-statedump-provider.h [new file with mode: 0644]
liblttng-ust/lttng-ust-statedump.c [new file with mode: 0644]
liblttng-ust/lttng-ust-statedump.h [new file with mode: 0644]
liblttng-ust/ust_baddr_statedump.h [deleted file]

index 78eac9727b9710842b2cccbc79842ca8504ccc25..a716a34fcdf5fa69b8f1ec0c2dc64535c191b988 100644 (file)
@@ -35,9 +35,9 @@ liblttng_ust_runtime_la_SOURCES = \
        lttng-filter-interpreter.c \
        filter-bytecode.h \
        lttng-hash-helper.h \
-       lttng-ust-baddr.c \
-       lttng-ust-baddr.h \
-       ust_baddr_statedump.h \
+       lttng-ust-statedump.c \
+       lttng-ust-statedump.h \
+       lttng-ust-statedump-provider.h \
        tracepoint-internal.h \
        clock.h \
        compat.h \
index 939dcd8627f340793d838140a20a24bc847c77dc..897b7f251e32cd77092e42d6e7572aae001a909a 100644 (file)
@@ -54,7 +54,7 @@
 #include "tracepoint-internal.h"
 #include "lttng-tracer.h"
 #include "lttng-tracer-core.h"
-#include "lttng-ust-baddr.h"
+#include "lttng-ust-statedump.h"
 #include "wait.h"
 #include "../libringbuffer/shm.h"
 #include "jhash.h"
@@ -683,7 +683,7 @@ void lttng_handle_pending_statedump(void *owner)
        struct lttng_session *session;
 
        /* Execute state dump */
-       lttng_ust_baddr_statedump(owner);
+       do_lttng_ust_statedump(owner);
 
        /* Clear pending state dump */
        if (ust_lock()) {
diff --git a/liblttng-ust/lttng-ust-baddr.c b/liblttng-ust/lttng-ust-baddr.c
deleted file mode 100644 (file)
index 922899b..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
- */
-
-#define _LGPL_SOURCE
-#define _GNU_SOURCE
-#include <link.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <stdint.h>
-#include <stddef.h>
-#include <stdio.h>
-
-#include <usterr-signal-safe.h>
-#include "lttng-tracer-core.h"
-#include "lttng-ust-baddr.h"
-
-#define TRACEPOINT_DEFINE
-#define TRACEPOINT_CREATE_PROBES
-#define TP_SESSION_CHECK
-#include "ust_baddr_statedump.h"
-
-struct extract_data {
-       void *owner;
-       void *exec_baddr;       /* executable base address */
-};
-
-/*
- * Trace baddr into all sessions for which statedump is pending owned by
- * the caller thread.
- */
-static
-int trace_baddr(void *base_addr_ptr,
-       const char *resolved_path,
-       int vdso,
-       void *owner)
-{
-       struct cds_list_head *sessionsp;
-       struct lttng_session *session;
-       struct stat sostat;
-
-       if (vdso || stat(resolved_path, &sostat)) {
-               sostat.st_size = 0;
-               sostat.st_mtime = -1;
-       }
-       /*
-        * UST lock nests within dynamic loader lock.
-        */
-       if (ust_lock()) {
-               /*
-                * Stop iteration on headers if need to exit.
-                */
-               ust_unlock();
-               return 1;
-       }
-
-       sessionsp = _lttng_get_sessions();
-       cds_list_for_each_entry(session, sessionsp, node) {
-               if (session->owner != owner)
-                       continue;
-               if (!session->statedump_pending)
-                       continue;
-               tracepoint(ust_baddr_statedump, soinfo,
-                               session, base_addr_ptr,
-                               resolved_path, sostat.st_size,
-                               sostat.st_mtime);
-       }
-       ust_unlock();
-       return 0;
-}
-
-static
-int extract_soinfo_events(struct dl_phdr_info *info, size_t size, void *_data)
-{
-       int j;
-       struct extract_data *data = _data;
-       void *owner = data->owner;
-
-       for (j = 0; j < info->dlpi_phnum; j++) {
-               char resolved_path[PATH_MAX];
-               void *base_addr_ptr;
-               int vdso = 0;
-
-               if (info->dlpi_phdr[j].p_type != PT_LOAD)
-                       continue;
-
-               /* Calculate virtual memory address of the loadable segment */
-               base_addr_ptr = (void *) info->dlpi_addr
-                       + info->dlpi_phdr[j].p_vaddr;
-
-               if ((info->dlpi_name == NULL || info->dlpi_name[0] == 0)
-                               && !data->exec_baddr) {
-                       /*
-                        * Only the first phdr encountered is considered
-                        * as the program executable. The following
-                        * could be e.g. vdso. Don't mistakenly dump
-                        * them as being the program executable.
-                        */
-                       data->exec_baddr = base_addr_ptr;
-                       /*
-                        * Deal with program executable outside of phdr
-                        * iteration.
-                        */
-                       break;
-               }
-               if (info->dlpi_name == NULL || info->dlpi_name[0] == 0) {
-                       /* Found vDSO. */
-                       snprintf(resolved_path, PATH_MAX - 1, "[vdso]");
-                       vdso = 1;
-               } else {
-                       /*
-                        * For regular dl_phdr_info entries we have to check if
-                        * the path to the shared object really exists.
-                        */
-                       if (!realpath(info->dlpi_name, resolved_path)) {
-                               /* Path unknown, put the 'path' into brackets */
-                               snprintf(resolved_path, PATH_MAX - 1, "[%s]",
-                                       info->dlpi_name);
-                               vdso = 1;
-                       }
-               }
-               if (trace_baddr(base_addr_ptr, resolved_path, vdso, owner)) {
-                       return 1;
-               }
-               /*
-                * We are only interested in the base address (lowest virtual
-                * address associated with the memory image), skip the rest
-                */
-               break;
-       }
-       return 0;
-}
-
-static
-void dump_exec_baddr(struct extract_data *data)
-{
-       void *owner = data->owner;
-       void *base_addr_ptr;
-       char exe_path[PATH_MAX];
-       ssize_t exe_len;
-
-       base_addr_ptr = data->exec_baddr;
-       if (!base_addr_ptr)
-               return;
-       /*
-        * We have to use /proc/self/exe to determine the executable full
-        * path.
-        */
-       exe_len = readlink("/proc/self/exe", exe_path, sizeof(exe_path) - 1);
-       if (exe_len <= 0)
-               return;
-       exe_path[exe_len] = '\0';
-       trace_baddr(base_addr_ptr, exe_path, 0, owner);
-}
-
-int lttng_ust_baddr_statedump(void *owner)
-{
-       struct extract_data data;
-
-       if (getenv("LTTNG_UST_WITHOUT_BADDR_STATEDUMP"))
-               return 0;
-
-       data.owner = owner;
-       data.exec_baddr = NULL;
-       /*
-        * Iterate through the list of currently loaded shared objects and
-        * generate events for loadable segments using
-        * extract_soinfo_events.
-        */
-       dl_iterate_phdr(extract_soinfo_events, &data);
-       /*
-        * We cannot call dladdr() from within phdr iteration, without
-        * causing constructor vs dynamic loader vs multithread internal
-        * deadlocks, so dump the executable outside of the phdr
-        * iteration.
-        */
-       dump_exec_baddr(&data);
-       return 0;
-}
-
-void lttng_ust_baddr_statedump_init(void)
-{
-       __tracepoints__init();
-       __tracepoints__ptrs_init();
-       __lttng_events_init__ust_baddr_statedump();
-}
-
-void lttng_ust_baddr_statedump_destroy(void)
-{
-       __lttng_events_exit__ust_baddr_statedump();
-       __tracepoints__ptrs_destroy();
-       __tracepoints__destroy();
-}
diff --git a/liblttng-ust/lttng-ust-baddr.h b/liblttng-ust/lttng-ust-baddr.h
deleted file mode 100644 (file)
index e7a0dfb..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef LTTNG_UST_BADDR_H
-#define LTTNG_UST_BADDR_H
-
-/*
- * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
- */
-
-#include <lttng/ust-events.h>
-
-void lttng_ust_baddr_statedump_init(void);
-void lttng_ust_baddr_statedump_destroy(void);
-
-int lttng_ust_baddr_statedump(void *owner);
-
-#endif /* LTTNG_UST_BADDR_H */
index 794cba9daad244397afc9d26ab111f379e235172..b290204024afcd4a761778cb5e359d42501a9ba5 100644 (file)
@@ -52,7 +52,7 @@
 #include "lttng-tracer-core.h"
 #include "compat.h"
 #include "../libringbuffer/tlsfixup.h"
-#include "lttng-ust-baddr.h"
+#include "lttng-ust-statedump.h"
 #include "clock.h"
 #include "../libringbuffer/getcpu.h"
 #include "getenv.h"
@@ -1452,7 +1452,7 @@ void __attribute__((constructor)) lttng_ust_init(void)
        init_tracepoint();
        lttng_ust_clock_init();
        lttng_ust_getcpu_init();
-       lttng_ust_baddr_statedump_init();
+       lttng_ust_statedump_init();
        lttng_ring_buffer_metadata_client_init();
        lttng_ring_buffer_client_overwrite_init();
        lttng_ring_buffer_client_overwrite_rt_init();
@@ -1573,7 +1573,7 @@ void lttng_ust_cleanup(int exiting)
        lttng_ring_buffer_client_overwrite_rt_exit();
        lttng_ring_buffer_client_overwrite_exit();
        lttng_ring_buffer_metadata_client_exit();
-       lttng_ust_baddr_statedump_destroy();
+       lttng_ust_statedump_destroy();
        exit_tracepoint();
        if (!exiting) {
                /* Reinitialize values for fork */
diff --git a/liblttng-ust/lttng-ust-statedump-provider.h b/liblttng-ust/lttng-ust-statedump-provider.h
new file mode 100644 (file)
index 0000000..adfbf9b
--- /dev/null
@@ -0,0 +1,77 @@
+#undef TRACEPOINT_PROVIDER
+#define TRACEPOINT_PROVIDER lttng_ust_statedump
+
+#if !defined(_TRACEPOINT_LTTNG_UST_STATEDUMP_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
+#define _TRACEPOINT_LTTNG_UST_STATEDUMP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
+ * Copyright (C) 2015  Antoine Busque <abusque@efficios.com>
+ *
+ * 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 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.
+ */
+
+#include <stdint.h>
+#include <unistd.h>
+#include <lttng/ust-events.h>
+
+#define LTTNG_UST_STATEDUMP_PROVIDER
+#include <lttng/tracepoint.h>
+
+TRACEPOINT_EVENT(lttng_ust_statedump, start,
+       TP_ARGS(struct lttng_session *, session),
+       TP_FIELDS()
+)
+
+TRACEPOINT_EVENT(lttng_ust_statedump, soinfo,
+       TP_ARGS(
+               struct lttng_session *, session,
+               void *, baddr,
+               const char*, sopath,
+               int64_t, size,
+               int64_t, mtime
+               ),
+       TP_FIELDS(
+               ctf_integer_hex(void *, baddr, baddr)
+               ctf_string(sopath, sopath)
+               ctf_integer(int64_t, size, size)
+               ctf_integer(int64_t, mtime, mtime)
+       )
+)
+
+TRACEPOINT_EVENT(lttng_ust_statedump, end,
+       TP_ARGS(struct lttng_session *, session),
+       TP_FIELDS()
+)
+
+#endif /* _TRACEPOINT_LTTNG_UST_STATEDUMP_H */
+
+#undef TRACEPOINT_INCLUDE
+#define TRACEPOINT_INCLUDE "./lttng-ust-statedump-provider.h"
+
+/* This part must be outside ifdef protection */
+#include <lttng/tracepoint-event.h>
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/liblttng-ust/lttng-ust-statedump.c b/liblttng-ust/lttng-ust-statedump.c
new file mode 100644 (file)
index 0000000..4faee07
--- /dev/null
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
+ * Copyright (C) 2015  Antoine Busque <abusque@efficios.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#define _LGPL_SOURCE
+#define _GNU_SOURCE
+#include <link.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <stdio.h>
+
+#include <usterr-signal-safe.h>
+#include "lttng-tracer-core.h"
+#include "lttng-ust-statedump.h"
+
+#define TRACEPOINT_DEFINE
+#define TRACEPOINT_CREATE_PROBES
+#define TP_SESSION_CHECK
+#include "lttng-ust-statedump-provider.h"
+
+struct dl_iterate_data {
+       void *owner;
+       int exec_found;
+};
+
+struct soinfo_data {
+       void *owner;
+       void *base_addr_ptr;
+       const char *resolved_path;
+       int vdso;
+       off_t size;
+       time_t mtime;
+};
+
+typedef void (*tracepoint_cb)(struct lttng_session *session, void *priv);
+
+/*
+ * Trace statedump event into all sessions owned by the caller thread
+ * for which statedump is pending.
+ */
+static
+int trace_statedump_event(tracepoint_cb tp_cb, void *owner, void *priv)
+{
+       struct cds_list_head *sessionsp;
+       struct lttng_session *session;
+
+       /*
+        * UST lock nests within dynamic loader lock.
+        */
+       if (ust_lock()) {
+               ust_unlock();
+               return 1;
+       }
+
+       sessionsp = _lttng_get_sessions();
+       cds_list_for_each_entry(session, sessionsp, node) {
+               if (session->owner != owner)
+                       continue;
+               if (!session->statedump_pending)
+                       continue;
+               tp_cb(session, priv);
+       }
+       ust_unlock();
+       return 0;
+}
+
+static
+void trace_soinfo_cb(struct lttng_session *session, void *priv)
+{
+       struct soinfo_data *so_data = (struct soinfo_data *) priv;
+
+       tracepoint(lttng_ust_statedump, soinfo,
+                  session, so_data->base_addr_ptr,
+                  so_data->resolved_path, so_data->size,
+                  so_data->mtime);
+}
+
+static
+void trace_start_cb(struct lttng_session *session, void *priv)
+{
+       tracepoint(lttng_ust_statedump, start, session);
+}
+
+static
+void trace_end_cb(struct lttng_session *session, void *priv)
+{
+       tracepoint(lttng_ust_statedump, end, session);
+}
+
+static
+int trace_baddr(struct soinfo_data *so_data)
+{
+       struct stat sostat;
+
+       if (so_data->vdso || stat(so_data->resolved_path, &sostat)) {
+               sostat.st_size = 0;
+               sostat.st_mtime = -1;
+       }
+
+       so_data->size = sostat.st_size;
+       so_data->mtime = sostat.st_mtime;
+
+       return trace_statedump_event(trace_soinfo_cb, so_data->owner, so_data);
+}
+
+static
+int trace_statedump_start(void *owner)
+{
+       return trace_statedump_event(trace_start_cb, owner, NULL);
+}
+
+static
+int trace_statedump_end(void *owner)
+{
+       return trace_statedump_event(trace_end_cb, owner, NULL);
+}
+
+static
+int extract_soinfo_events(struct dl_phdr_info *info, size_t size, void *_data)
+{
+       int j;
+       struct dl_iterate_data *data = _data;
+
+       for (j = 0; j < info->dlpi_phnum; j++) {
+               struct soinfo_data so_data;
+               char resolved_path[PATH_MAX];
+               void *base_addr_ptr;
+
+               if (info->dlpi_phdr[j].p_type != PT_LOAD)
+                       continue;
+
+               /* Calculate virtual memory address of the loadable segment */
+               base_addr_ptr = (void *) info->dlpi_addr +
+                       info->dlpi_phdr[j].p_vaddr;
+
+               if ((info->dlpi_name == NULL || info->dlpi_name[0] == 0)) {
+                       /*
+                        * Only the first phdr without a dlpi_name
+                        * encountered is considered as the program
+                        * executable. The rest are vdsos.
+                        */
+                       if (!data->exec_found) {
+                               ssize_t path_len;
+                               data->exec_found = 1;
+
+                               /*
+                                * Use /proc/self/exe to resolve the
+                                * executable's full path.
+                                */
+                               path_len = readlink("/proc/self/exe",
+                                                   resolved_path,
+                                                   PATH_MAX - 1);
+                               if (path_len <= 0)
+                                       break;
+
+                               resolved_path[path_len] = '\0';
+                               so_data.vdso = 0;
+                       } else {
+                               snprintf(resolved_path, PATH_MAX - 1, "[vdso]");
+                               so_data.vdso = 1;
+                       }
+               } else {
+                       /*
+                        * For regular dl_phdr_info entries check if
+                        * the path to the SO really exists. If not,
+                        * treat as vdso and use dlpi_name as 'path'.
+                        */
+                       if (!realpath(info->dlpi_name, resolved_path)) {
+                               snprintf(resolved_path, PATH_MAX - 1, "[%s]",
+                                       info->dlpi_name);
+                               so_data.vdso = 1;
+                       }
+               }
+
+               so_data.owner = data->owner;
+               so_data.base_addr_ptr = base_addr_ptr;
+               so_data.resolved_path = resolved_path;
+               return trace_baddr(&so_data);
+       }
+
+       return 0;
+}
+
+/*
+ * Generate a statedump of base addresses of all shared objects loaded
+ * by the traced application, as well as for the application's
+ * executable itself.
+ */
+static
+int do_baddr_statedump(void *owner)
+{
+       struct dl_iterate_data data;
+
+       if (getenv("LTTNG_UST_WITHOUT_BADDR_STATEDUMP"))
+               return 0;
+
+       data.owner = owner;
+       data.exec_found = 0;
+       /*
+        * Iterate through the list of currently loaded shared objects and
+        * generate events for loadable segments using
+        * extract_soinfo_events.
+        */
+       dl_iterate_phdr(extract_soinfo_events, &data);
+
+       return 0;
+}
+
+/*
+ * Generate a statedump of a given traced application. A statedump is
+ * delimited by start and end events. For a given (process, session)
+ * pair, begin/end events are serialized and will match. However, in a
+ * session, statedumps from different processes may be
+ * interleaved. The vpid context should be used to identify which
+ * events belong to which process.
+ */
+int do_lttng_ust_statedump(void *owner)
+{
+       trace_statedump_start(owner);
+       do_baddr_statedump(owner);
+       trace_statedump_end(owner);
+
+       return 0;
+}
+
+void lttng_ust_statedump_init(void)
+{
+       __tracepoints__init();
+       __tracepoints__ptrs_init();
+       __lttng_events_init__lttng_ust_statedump();
+}
+
+void lttng_ust_statedump_destroy(void)
+{
+       __lttng_events_exit__lttng_ust_statedump();
+       __tracepoints__ptrs_destroy();
+       __tracepoints__destroy();
+}
diff --git a/liblttng-ust/lttng-ust-statedump.h b/liblttng-ust/lttng-ust-statedump.h
new file mode 100644 (file)
index 0000000..e78774d
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef LTTNG_UST_STATEDUMP_H
+#define LTTNG_UST_STATEDUMP_H
+
+/*
+ * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#include <lttng/ust-events.h>
+
+void lttng_ust_statedump_init(void);
+void lttng_ust_statedump_destroy(void);
+
+int do_lttng_ust_statedump(void *owner);
+
+#endif /* LTTNG_UST_STATEDUMP_H */
diff --git a/liblttng-ust/ust_baddr_statedump.h b/liblttng-ust/ust_baddr_statedump.h
deleted file mode 100644 (file)
index 77a9af4..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#undef TRACEPOINT_PROVIDER
-#define TRACEPOINT_PROVIDER ust_baddr_statedump
-
-#if !defined(_TRACEPOINT_UST_BADDR_STATEDUMP_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
-#define _TRACEPOINT_UST_BADDR_STATEDUMP_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Copyright (C) 2013  Paul Woegerer <paul_woegerer@mentor.com>
- *
- * 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 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.
- */
-
-#include <stdint.h>
-#include <unistd.h>
-#include <lttng/ust-events.h>
-
-#define LTTNG_UST_BADDR_STATEDUMP_PROVIDER
-#include <lttng/tracepoint.h>
-
-TRACEPOINT_EVENT(ust_baddr_statedump, soinfo,
-       TP_ARGS(struct lttng_session *, session, void *, baddr, const char*, sopath, int64_t, size, int64_t, mtime),
-       TP_FIELDS(
-               ctf_integer_hex(void *, baddr, baddr)
-               ctf_string(sopath, sopath)
-               ctf_integer(int64_t, size, size)
-               ctf_integer(int64_t, mtime, mtime)
-       )
-)
-
-#endif /* _TRACEPOINT_UST_BADDR_STATEDUMP_H */
-
-#undef TRACEPOINT_INCLUDE
-#define TRACEPOINT_INCLUDE "./ust_baddr_statedump.h"
-
-/* This part must be outside ifdef protection */
-#include <lttng/tracepoint-event.h>
-
-#ifdef __cplusplus
-}
-#endif
This page took 0.034267 seconds and 4 git commands to generate.