[sheepdog] [PATCH 6/6] lib: add tracepoints related to event loop
Hitoshi Mitake
mitake.hitoshi at lab.ntt.co.jp
Fri Jan 9 08:37:19 CET 2015
Cc: Gu Ping <guping610 at qq.com>
Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
---
lib/Makefile.am | 4 +--
lib/event.c | 9 +++++++
lib/tracepoint/event_tp.c | 13 ++++++++++
lib/tracepoint/event_tp.h | 63 +++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 87 insertions(+), 2 deletions(-)
create mode 100644 lib/tracepoint/event_tp.c
create mode 100644 lib/tracepoint/event_tp.h
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 64ac309..0fa6dd8 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -37,10 +37,10 @@ endif
# for LTTng ust tracepoints
AM_CPPFLAGS = -I$(top_srcdir)/lib/tracepoint
-noinst_HEADERS = tracepoint/work_tp.h tracepoint/sockfd_cache_tp.h
+noinst_HEADERS = tracepoint/work_tp.h tracepoint/sockfd_cache_tp.h tracepoint/event_tp.h
if BUILD_LTTNG_UST
-libsheepdog_a_SOURCES += tracepoint/work_tp.c tracepoint/sockfd_cache_tp.c
+libsheepdog_a_SOURCES += tracepoint/work_tp.c tracepoint/sockfd_cache_tp.c tracepoint/event_tp.c
endif
# support for GNU Flymake
diff --git a/lib/event.c b/lib/event.c
index eb55fff..3a0f968 100644
--- a/lib/event.c
+++ b/lib/event.c
@@ -19,6 +19,9 @@
#include "util.h"
#include "event.h"
+#define TRACEPOINT_DEFINE
+#include "event_tp.h"
+
static int efd;
static struct rb_root events_tree = RB_ROOT;
@@ -119,6 +122,8 @@ int register_event_prio(int fd, event_handler_t h, void *data, int prio)
} else
rb_insert(&events_tree, ei, rb, event_cmp);
+ tracepoint(event, _register, fd, (void *)h, data, prio);
+
return ret;
}
@@ -143,6 +148,8 @@ void unregister_event(int fd)
* to be called in do_event_loop(). Refreshing the event loop is safe.
*/
event_force_refresh();
+
+ tracepoint(event, unregister, fd);
}
int modify_event(int fd, unsigned int new_events)
@@ -203,6 +210,8 @@ refresh:
sd_err("epoll_wait failed: %m");
exit(1);
} else if (nr) {
+ tracepoint(event, loop_start, nr_events);
+
for (i = 0; i < nr; i++) {
struct event_info *ei;
diff --git a/lib/tracepoint/event_tp.c b/lib/tracepoint/event_tp.c
new file mode 100644
index 0000000..1c8e54c
--- /dev/null
+++ b/lib/tracepoint/event_tp.c
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version
+ * 2 as published by the Free Software Foundation.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define TRACEPOINT_CREATE_PROBES
+#include "event_tp.h"
diff --git a/lib/tracepoint/event_tp.h b/lib/tracepoint/event_tp.h
new file mode 100644
index 0000000..cf7c562
--- /dev/null
+++ b/lib/tracepoint/event_tp.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version
+ * 2 as published by the Free Software Foundation.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef ENABLE_LTTNG_UST
+
+#undef TRACEPOINT_PROVIDER
+#define TRACEPOINT_PROVIDER event
+
+#undef TRACEPOINT_INCLUDE
+#define TRACEPOINT_INCLUDE "./event_tp.h"
+
+#if !defined(EVENT_TRACEPOINT_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
+#define EVENT_TRACEPOINT_H
+
+#include <lttng/tracepoint.h>
+
+TRACEPOINT_EVENT(
+ event,
+ loop_start,
+ TP_ARGS(int, nr_events),
+ TP_FIELDS(
+ ctf_integer(int, nr, nr_events)
+ )
+ )
+
+TRACEPOINT_EVENT(
+ event,
+ _register,
+ TP_ARGS(int, _fd, void *, _handler, void *, _data, int, _prio),
+ TP_FIELDS(
+ ctf_integer(int, fd, _fd)
+ ctf_integer(void *, handler, _handler)
+ ctf_integer(void *, data, _data)
+ ctf_integer(int, prio, _prio)
+ )
+ )
+
+TRACEPOINT_EVENT(
+ event,
+ unregister,
+ TP_ARGS(int, _fd),
+ TP_FIELDS(
+ ctf_integer(int, fd, _fd)
+ )
+ )
+
+#endif /* EVENT_TRACEPOINT_H */
+
+#include <lttng/tracepoint-event.h>
+
+#else /* ENABLE_LTTNG_UST */
+
+#include "lttng_disable.h"
+
+#endif
--
1.9.1
More information about the sheepdog
mailing list