Cc: Gu Ping <[email protected]>
Signed-off-by: Hitoshi Mitake <[email protected]>
---
 lib/Makefile.am                  |  4 +--
 lib/sockfd_cache.c               | 16 +++++++++
 lib/tracepoint/sockfd_cache_tp.c | 13 ++++++++
 lib/tracepoint/sockfd_cache_tp.h | 70 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 101 insertions(+), 2 deletions(-)
 create mode 100644 lib/tracepoint/sockfd_cache_tp.c
 create mode 100644 lib/tracepoint/sockfd_cache_tp.h

diff --git a/lib/Makefile.am b/lib/Makefile.am
index bb68430..64ac309 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
+noinst_HEADERS         =  tracepoint/work_tp.h tracepoint/sockfd_cache_tp.h
 
 if BUILD_LTTNG_UST
-libsheepdog_a_SOURCES  += tracepoint/work_tp.c
+libsheepdog_a_SOURCES  += tracepoint/work_tp.c tracepoint/sockfd_cache_tp.c
 endif
 
 # support for GNU Flymake
diff --git a/lib/sockfd_cache.c b/lib/sockfd_cache.c
index a8b86b8..7c8dd93 100644
--- a/lib/sockfd_cache.c
+++ b/lib/sockfd_cache.c
@@ -35,6 +35,9 @@
 #include "util.h"
 #include "sheep.h"
 
+#define TRACEPOINT_DEFINE
+#include "sockfd_cache_tp.h"
+
 struct sockfd_cache {
        struct rb_root root;
        struct sd_rw_lock lock;
@@ -202,6 +205,8 @@ static void sockfd_cache_add_nolock(const struct node_id 
*nid)
                return;
        }
        sockfd_cache.count++;
+
+       tracepoint(sockfd_cache, new_sockfd_entry, new, fds_count);
 }
 
 /* Add group of nodes to the cache */
@@ -237,6 +242,8 @@ void sockfd_cache_add(const struct node_id *nid)
        sd_rw_unlock(&sockfd_cache.lock);
        n = uatomic_add_return(&sockfd_cache.count, 1);
        sd_debug("%s, count %d", addr_to_str(nid->addr, nid->port), n);
+
+       tracepoint(sockfd_cache, new_sockfd_entry, new, fds_count);
 }
 
 static uatomic_bool fds_in_grow;
@@ -265,6 +272,8 @@ static void do_grow_fds(struct work *work)
        fds_count *= 2;
        fds_high_watermark = FDS_WATERMARK(fds_count);
        sd_rw_unlock(&sockfd_cache.lock);
+
+       tracepoint(sockfd_cache, grow_fd_count, new_fds_count);
 }
 
 static void grow_fds_done(struct work *work)
@@ -359,6 +368,9 @@ out:
        sfd = xmalloc(sizeof(*sfd));
        sfd->fd = entry->fds[idx].fd;
        sfd->idx = idx;
+
+       tracepoint(sockfd_cache, cache_get, 0);
+
        return sfd;
 }
 
@@ -456,11 +468,15 @@ void sockfd_cache_put(const struct node_id *nid, struct 
sockfd *sfd)
                sd_debug("%d", sfd->fd);
                close(sfd->fd);
                free(sfd);
+
+               tracepoint(sockfd_cache, cache_put, 0);
                return;
        }
 
        sockfd_cache_put_long(nid, sfd->idx);
        free(sfd);
+
+       tracepoint(sockfd_cache, cache_put, 1);
 }
 
 /* Delete all sockfd connected to the node, when node is crashed. */
diff --git a/lib/tracepoint/sockfd_cache_tp.c b/lib/tracepoint/sockfd_cache_tp.c
new file mode 100644
index 0000000..c810f5f
--- /dev/null
+++ b/lib/tracepoint/sockfd_cache_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 "sockfd_cache_tp.h"
diff --git a/lib/tracepoint/sockfd_cache_tp.h b/lib/tracepoint/sockfd_cache_tp.h
new file mode 100644
index 0000000..483cb7f
--- /dev/null
+++ b/lib/tracepoint/sockfd_cache_tp.h
@@ -0,0 +1,70 @@
+/*
+ * 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 sockfd_cache
+
+#undef TRACEPOINT_INCLUDE
+#define TRACEPOINT_INCLUDE "./sockfd_cache_tp.h"
+
+#if !defined(SOCKFD_CACHE_TRACEPOINT_H) || 
defined(TRACEPOINT_HEADER_MULTI_READ)
+#define SOCKFD_CACHE_TRACEPOINT_H
+
+#include <lttng/tracepoint.h>
+
+TRACEPOINT_EVENT(
+       sockfd_cache,
+       new_sockfd_entry,
+       TP_ARGS(void *, _new_entry, int, _fd_count),
+       TP_FIELDS(
+               ctf_integer_hex(void *, new_entry, _new_entry)
+               ctf_integer(void *, fd_count, _fd_count)
+               )
+       )
+
+TRACEPOINT_EVENT(
+       sockfd_cache,
+       grow_fd_count,
+       TP_ARGS(int, _new_fd_count),
+       TP_FIELDS(
+               ctf_integer(int, new_fd_count, _new_fd_count)
+               )
+       )
+
+TRACEPOINT_EVENT(
+       sockfd_cache,
+       cache_get,
+       TP_ARGS(int, _is_long_cache),
+       TP_FIELDS(
+               ctf_integer(int, is_long_cache, _is_long_cache)
+               )
+       )
+
+TRACEPOINT_EVENT(
+       sockfd_cache,
+       cache_put,
+       TP_ARGS(int, _is_long_cache),
+       TP_FIELDS(
+               ctf_integer(int, is_long_cache, _is_long_cache)
+               )
+       )
+
+#endif /* WORK_TRACEPOINT_H */
+
+#include <lttng/tracepoint-event.h>
+
+#else /* ENABLE_LTTNG_UST */
+
+#include "lttng_disable.h"
+
+#endif
-- 
1.9.1

-- 
sheepdog mailing list
[email protected]
https://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to