X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-events.c;h=373995d08e61135bdd71b7991ba10749132d9116;hb=710b8ee36eec50c00e72cb61e146357130e1d94c;hp=f6db6e8a351d495e3e9cd2626e14fece8c21af49;hpb=53569322d40ed45abe0368ddb08eb4a2738afc37;p=lttng-ust.git diff --git a/liblttng-ust/lttng-events.c b/liblttng-ust/lttng-events.c index f6db6e8a..373995d0 100644 --- a/liblttng-ust/lttng-events.c +++ b/liblttng-ust/lttng-events.c @@ -384,6 +384,16 @@ int lttng_create_all_ctx_enums(size_t nr_fields, return 0; } +/* + * Ensure that a state-dump will be performed for this session at the end + * of the current handle_message(). + */ +int lttng_session_statedump(struct lttng_session *session) +{ + session->statedump_pending = 1; + lttng_ust_sockinfo_session_enabled(session->owner); + return 0; +} int lttng_session_enable(struct lttng_session *session) { @@ -453,8 +463,9 @@ int lttng_session_enable(struct lttng_session *session) CMM_ACCESS_ONCE(session->active) = 1; CMM_ACCESS_ONCE(session->been_active) = 1; - session->statedump_pending = 1; - lttng_ust_sockinfo_session_enabled(session->owner); + ret = lttng_session_statedump(session); + if (ret) + return ret; end: return ret; } @@ -962,6 +973,7 @@ int lttng_enabler_attach_exclusion(struct lttng_enabler *enabler, } int lttng_attach_context(struct lttng_ust_context *context_param, + union ust_args *uargs, struct lttng_ctx **ctx, struct lttng_session *session) { /* @@ -996,6 +1008,9 @@ int lttng_attach_context(struct lttng_ust_context *context_param, return lttng_add_ip_to_ctx(ctx); case LTTNG_UST_CONTEXT_CPU_ID: return lttng_add_cpu_id_to_ctx(ctx); + case LTTNG_UST_CONTEXT_APP_CONTEXT: + return lttng_ust_add_app_context_to_ctx_rcu(uargs->app_context.ctxname, + ctx); default: return -EINVAL; }