X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-ust-comm.c;h=2d3766f1326ff407351e3d41088d2d5c0aacf094;hb=13436238c6418c33e4eb3c3ab8e2a466f1597fd2;hp=597712bc1313057daaa4ee32730b46c3951eb78d;hpb=86e361632f8cb161d6cf3cfd1bb964a7f7fa0a52;p=lttng-ust.git diff --git a/liblttng-ust/lttng-ust-comm.c b/liblttng-ust/lttng-ust-comm.c index 597712bc..2d3766f1 100644 --- a/liblttng-ust/lttng-ust-comm.c +++ b/liblttng-ust/lttng-ust-comm.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -51,6 +52,7 @@ #include "lttng-tracer-core.h" #include "compat.h" #include "../libringbuffer/tlsfixup.h" +#include "../liblttng-ust-baddr/lttng-ust-baddr.h" /* * Has lttng ust comm constructor been called ? @@ -106,6 +108,7 @@ struct sock_info { char wait_shm_path[PATH_MAX]; char *wait_shm_mmap; + struct lttng_session *session_enabled; }; /* Socket from app (connect) to session daemon (listen) for communication */ @@ -122,6 +125,8 @@ struct sock_info global_apps = { .notify_socket = -1, .wait_shm_path = "/" LTTNG_UST_WAIT_FILENAME, + + .session_enabled = NULL, }; /* TODO: allow global_apps_sock_path override */ @@ -135,6 +140,8 @@ struct sock_info local_apps = { .socket = -1, .notify_socket = -1, + + .session_enabled = NULL, }; static int wait_poll_fallback; @@ -1206,6 +1213,14 @@ restart: ret = handle_message(sock_info, sock, &lum); if (ret) { ERR("Error handling message for %s socket", sock_info->name); + } else { + struct lttng_session *session; + + session = sock_info->session_enabled; + if (session) { + sock_info->session_enabled = NULL; + lttng_ust_baddr_statedump(session); + } } continue; default: @@ -1519,3 +1534,10 @@ void ust_after_fork_child(sigset_t *restore_sigset) ust_after_fork_common(restore_sigset); lttng_ust_init(); } + +void lttng_ust_sockinfo_session_enabled(void *owner, + struct lttng_session *session_enabled) +{ + struct sock_info *sock_info = owner; + sock_info->session_enabled = session_enabled; +}