Implement statedump command in UST
[lttng-ust.git] / liblttng-ust / lttng-events.c
index f6db6e8a351d495e3e9cd2626e14fece8c21af49..373995d08e61135bdd71b7991ba10749132d9116 100644 (file)
@@ -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;
        }
This page took 0.023921 seconds and 4 git commands to generate.