Add prospective callback register tracepoint

This commit is contained in:
Christophe Bedard 2019-05-28 14:16:38 +02:00
parent d36c3d824c
commit 3f13dd34d0
3 changed files with 41 additions and 0 deletions

View file

@ -152,6 +152,14 @@ void TRACEPOINT(
rclcpp_timer_callback_end,
const void * callback);
/**
* tp: rclcpp_callback_register
*/
void TRACEPOINT(
rclcpp_callback_register,
const void * handle,
const void * callback);
#ifdef __cplusplus
}
#endif

View file

@ -219,3 +219,16 @@ TRACEPOINT_EVENT(
ctf_integer_hex(const void *, callback, callback_arg)
)
)
TRACEPOINT_EVENT(
ros2,
rclcpp_callback_register,
TP_ARGS(
const void *, handle_arg,
const char *, callback_arg
),
TP_FIELDS(
ctf_integer_hex(const void *, handle, handle_arg)
ctf_string(callback, callback_arg)
)
)

View file

@ -1,3 +1,4 @@
#include <execinfo.h>
#include "tracetools/tracetools.h"
#if defined(WITH_LTTNG) && !defined(_WIN32)
@ -9,6 +10,17 @@
#endif
const char * get_symbol(const void * function_ptr) {
#if defined(WITH_LTTNG) && !defined(_WIN32)
char** symbols = backtrace_symbols(&function_ptr, 1);
const char * result = symbols[0];
free(symbols);
return result;
#else
return "";
#endif
}
bool ros_trace_compile_status()
{
#if defined(WITH_LTTNG) && !defined(_WIN32)
@ -151,3 +163,11 @@ void TRACEPOINT(
{
CONDITIONAL_TP(ros2, rclcpp_timer_callback_end, callback);
}
void TRACEPOINT(
rclcpp_callback_register,
const void * handle,
const void * callback)
{
CONDITIONAL_TP(ros2, rclcpp_callback_register, handle, get_symbol(callback));
}