From 87879a5ecb0d31e490ce078adaf4408476bd4df8 Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Tue, 15 Sep 2020 00:28:55 -0400 Subject: [PATCH] lib: add tracepoints for pthread run, stop Signed-off-by: Quentin Young --- lib/frr_pthread.c | 5 +++++ lib/trace.h | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/lib/frr_pthread.c b/lib/frr_pthread.c index da9594ed8..82d0c8c49 100644 --- a/lib/frr_pthread.c +++ b/lib/frr_pthread.c @@ -28,6 +28,7 @@ #include "memory.h" #include "linklist.h" #include "zlog.h" +#include "trace.h" DEFINE_MTYPE_STATIC(LIB, FRR_PTHREAD, "FRR POSIX Thread") DEFINE_MTYPE_STATIC(LIB, PTHREAD_PRIM, "POSIX sync primitives") @@ -167,6 +168,8 @@ int frr_pthread_run(struct frr_pthread *fpt, const pthread_attr_t *attr) sigfillset(&blocksigs); pthread_sigmask(SIG_BLOCK, &blocksigs, &oldsigs); + tracepoint(frr_libfrr, frr_pthread_run, fpt->name); + fpt->rcu_thread = rcu_thread_prepare(); ret = pthread_create(&fpt->thread, attr, frr_pthread_inner, fpt); @@ -204,6 +207,8 @@ void frr_pthread_notify_running(struct frr_pthread *fpt) int frr_pthread_stop(struct frr_pthread *fpt, void **result) { + tracepoint(frr_libfrr, frr_pthread_stop, fpt->name); + int ret = (*fpt->attr.stop)(fpt, result); memset(&fpt->thread, 0x00, sizeof(fpt->thread)); return ret; diff --git a/lib/trace.h b/lib/trace.h index d605cad0c..e6d0f115e 100644 --- a/lib/trace.h +++ b/lib/trace.h @@ -104,6 +104,28 @@ THREAD_OPERATION_TRACEPOINT_INSTANCE(thread_cancel) THREAD_OPERATION_TRACEPOINT_INSTANCE(thread_cancel_async) THREAD_OPERATION_TRACEPOINT_INSTANCE(thread_call) +TRACEPOINT_EVENT( + frr_libfrr, + frr_pthread_run, + TP_ARGS( + char *, name + ), + TP_FIELDS( + ctf_string(frr_pthread_name, name) + ) +) + +TRACEPOINT_EVENT( + frr_libfrr, + frr_pthread_stop, + TP_ARGS( + char *, name + ), + TP_FIELDS( + ctf_string(frr_pthread_name, name) + ) +) + /* clang-format on */ #include -- 2.39.5