X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-events.c;h=9380e9ceb688b9b46df58122d7cc3a47c14421b3;hb=246be17ec5a99beae7cc40eede54b4958958d8fb;hp=77515843d3a0f5e2a6f895685064689aece4fd98;hpb=c4d6bd104a561c94c35147ae34d5810ca9f05740;p=lttng-ust.git diff --git a/liblttng-ust/lttng-events.c b/liblttng-ust/lttng-events.c index 77515843..9380e9ce 100644 --- a/liblttng-ust/lttng-events.c +++ b/liblttng-ust/lttng-events.c @@ -294,7 +294,8 @@ int lttng_session_enable(struct lttng_session *session) CMM_ACCESS_ONCE(session->active) = 1; CMM_ACCESS_ONCE(session->been_active) = 1; - lttng_ust_sockinfo_session_enabled(session->owner, session); + session->statedump_pending = 1; + lttng_ust_sockinfo_session_enabled(session->owner); end: return ret; } @@ -674,6 +675,22 @@ int lttng_fix_pending_events(void) return 0; } +/* + * Called after session enable: For each session, execute pending statedumps. + */ +int lttng_handle_pending_statedumps(t_statedump_func_ptr statedump_func_ptr) +{ + struct lttng_session *session; + + cds_list_for_each_entry(session, &sessions, node) { + if (session->statedump_pending) { + session->statedump_pending = 0; + statedump_func_ptr(session); + } + } + return 0; +} + /* * Only used internally at session destruction. */