Introduce common event structure
[lttng-ust.git] / liblttng-ust / lttng-events.c
index 72d25bb47ea3e3a05807f7e5cbc94b2ad0e5b482..508bf51d4e17aba385b30878a4c32be93372f4f2 100644 (file)
@@ -65,7 +65,7 @@
 static CDS_LIST_HEAD(sessions);
 static CDS_LIST_HEAD(event_notifier_groups);
 
-struct cds_list_head *_lttng_get_sessions(void)
+struct cds_list_head *lttng_get_sessions(void)
 {
        return &sessions;
 }
@@ -90,10 +90,10 @@ void lttng_enabler_destroy(struct lttng_enabler *enabler);
  */
 int lttng_session_active(void)
 {
-       struct lttng_session *iter;
+       struct lttng_ust_session_private *iter;
 
        cds_list_for_each_entry(iter, &sessions, node) {
-               if (iter->active)
+               if (iter->pub->active)
                        return 1;
        }
        return 0;
@@ -132,24 +132,34 @@ int lttng_loglevel_match(int loglevel,
 struct lttng_session *lttng_session_create(void)
 {
        struct lttng_session *session;
+       struct lttng_ust_session_private *session_priv;
        int i;
 
        session = zmalloc(sizeof(struct lttng_session));
        if (!session)
                return NULL;
-       if (lttng_context_init_all(&session->ctx)) {
+       session->struct_size = sizeof(struct lttng_session);
+       session_priv = zmalloc(sizeof(struct lttng_ust_session_private));
+       if (!session_priv) {
                free(session);
                return NULL;
        }
-       CDS_INIT_LIST_HEAD(&session->chan_head);
-       CDS_INIT_LIST_HEAD(&session->events_head);
-       CDS_INIT_LIST_HEAD(&session->enums_head);
-       CDS_INIT_LIST_HEAD(&session->enablers_head);
+       session->priv = session_priv;
+       session_priv->pub = session;
+       if (lttng_context_init_all(&session->priv->ctx)) {
+               free(session_priv);
+               free(session);
+               return NULL;
+       }
+       CDS_INIT_LIST_HEAD(&session->priv->chan_head);
+       CDS_INIT_LIST_HEAD(&session->priv->events_head);
+       CDS_INIT_LIST_HEAD(&session->priv->enums_head);
+       CDS_INIT_LIST_HEAD(&session->priv->enablers_head);
        for (i = 0; i < LTTNG_UST_EVENT_HT_SIZE; i++)
-               CDS_INIT_HLIST_HEAD(&session->events_ht.table[i]);
+               CDS_INIT_HLIST_HEAD(&session->priv->events_ht.table[i]);
        for (i = 0; i < LTTNG_UST_ENUM_HT_SIZE; i++)
-               CDS_INIT_HLIST_HEAD(&session->enums_ht.table[i]);
-       cds_list_add(&session->node, &sessions);
+               CDS_INIT_HLIST_HEAD(&session->priv->enums_ht.table[i]);
+       cds_list_add(&session->priv->node, &sessions);
        return session;
 }
 
@@ -244,14 +254,14 @@ void register_event(struct lttng_event *event)
        int ret;
        const struct lttng_event_desc *desc;
 
-       assert(event->registered == 0);
-       desc = event->desc;
+       assert(event->parent->priv->registered == 0);
+       desc = event->parent->priv->desc;
        ret = __tracepoint_probe_register_queue_release(desc->name,
                        desc->probe_callback,
                        event, desc->signature);
        WARN_ON_ONCE(ret);
        if (!ret)
-               event->registered = 1;
+               event->parent->priv->registered = 1;
 }
 
 static
@@ -275,14 +285,14 @@ void unregister_event(struct lttng_event *event)
        int ret;
        const struct lttng_event_desc *desc;
 
-       assert(event->registered == 1);
-       desc = event->desc;
+       assert(event->parent->priv->registered == 1);
+       desc = event->parent->priv->desc;
        ret = __tracepoint_probe_unregister_queue_release(desc->name,
                        desc->probe_callback,
                        event);
        WARN_ON_ONCE(ret);
        if (!ret)
-               event->registered = 0;
+               event->parent->priv->registered = 0;
 }
 
 static
@@ -306,7 +316,7 @@ void unregister_event_notifier(struct lttng_event_notifier *event_notifier)
 static
 void _lttng_event_unregister(struct lttng_event *event)
 {
-       if (event->registered)
+       if (event->parent->priv->registered)
                unregister_event(event);
 }
 
@@ -323,29 +333,30 @@ void _lttng_event_notifier_unregister(struct lttng_event_notifier *event_notifie
 void lttng_session_destroy(struct lttng_session *session)
 {
        struct lttng_channel *chan, *tmpchan;
-       struct lttng_event *event, *tmpevent;
+       struct lttng_ust_event_private *event_priv, *tmpevent_priv;
        struct lttng_enum *_enum, *tmp_enum;
        struct lttng_event_enabler *event_enabler, *event_tmpenabler;
 
        CMM_ACCESS_ONCE(session->active) = 0;
-       cds_list_for_each_entry(event, &session->events_head, node) {
-               _lttng_event_unregister(event);
+       cds_list_for_each_entry(event_priv, &session->priv->events_head, node) {
+               _lttng_event_unregister(event_priv->pub);
        }
-       lttng_ust_synchronize_trace();  /* Wait for in-flight events to complete */
+       lttng_ust_urcu_synchronize_rcu();       /* Wait for in-flight events to complete */
        __tracepoint_probe_prune_release_queue();
        cds_list_for_each_entry_safe(event_enabler, event_tmpenabler,
-                       &session->enablers_head, node)
+                       &session->priv->enablers_head, node)
                lttng_event_enabler_destroy(event_enabler);
-       cds_list_for_each_entry_safe(event, tmpevent,
-                       &session->events_head, node)
-               _lttng_event_destroy(event);
+       cds_list_for_each_entry_safe(event_priv, tmpevent_priv,
+                       &session->priv->events_head, node)
+               _lttng_event_destroy(event_priv->pub);
        cds_list_for_each_entry_safe(_enum, tmp_enum,
-                       &session->enums_head, node)
+                       &session->priv->enums_head, node)
                _lttng_enum_destroy(_enum);
-       cds_list_for_each_entry_safe(chan, tmpchan, &session->chan_head, node)
+       cds_list_for_each_entry_safe(chan, tmpchan, &session->priv->chan_head, node)
                _lttng_channel_unmap(chan);
-       cds_list_del(&session->node);
-       lttng_destroy_context(session->ctx);
+       cds_list_del(&session->priv->node);
+       lttng_destroy_context(session->priv->ctx);
+       free(session->priv);
        free(session);
 }
 
@@ -364,7 +375,7 @@ void lttng_event_notifier_group_destroy(
                        &event_notifier_group->event_notifiers_head, node)
                _lttng_event_notifier_unregister(notifier);
 
-       lttng_ust_synchronize_trace();
+       lttng_ust_urcu_synchronize_rcu();
 
        cds_list_for_each_entry_safe(notifier_enabler, tmpnotifier_enabler,
                        &event_notifier_group->enablers_head, node)
@@ -445,7 +456,7 @@ int lttng_enum_create(const struct lttng_enum_desc *desc,
 
        /* Check if this enum is already registered for this session. */
        hash = jhash(enum_name, name_len, 0);
-       head = &session->enums_ht.table[hash & (LTTNG_UST_ENUM_HT_SIZE - 1)];
+       head = &session->priv->enums_ht.table[hash & (LTTNG_UST_ENUM_HT_SIZE - 1)];
 
        _enum = lttng_ust_enum_get_from_desc(session, desc);
        if (_enum) {
@@ -453,7 +464,7 @@ int lttng_enum_create(const struct lttng_enum_desc *desc,
                goto exist;
        }
 
-       notify_socket = lttng_get_notify_socket(session->owner);
+       notify_socket = lttng_get_notify_socket(session->priv->owner);
        if (notify_socket < 0) {
                ret = notify_socket;
                goto socket_error;
@@ -468,7 +479,7 @@ int lttng_enum_create(const struct lttng_enum_desc *desc,
        _enum->desc = desc;
 
        ret = ustcomm_register_enum(notify_socket,
-               session->objd,
+               session->priv->objd,
                enum_name,
                desc->nr_entries,
                desc->entries,
@@ -477,7 +488,7 @@ int lttng_enum_create(const struct lttng_enum_desc *desc,
                DBG("Error (%d) registering enumeration to sessiond", ret);
                goto sessiond_register_error;
        }
-       cds_list_add(&_enum->node, &session->enums_head);
+       cds_list_add(&_enum->node, &session->priv->enums_head);
        cds_hlist_add_head(&_enum->hlist, head);
        return 0;
 
@@ -494,19 +505,6 @@ int lttng_create_enum_check(const struct lttng_type *type,
                struct lttng_session *session)
 {
        switch (type->atype) {
-       case atype_enum:
-       {
-               const struct lttng_enum_desc *enum_desc;
-               int ret;
-
-               enum_desc = type->u.legacy.basic.enumeration.desc;
-               ret = lttng_enum_create(enum_desc, session);
-               if (ret && ret != -EEXIST) {
-                       DBG("Unable to create enum error: (%d)", ret);
-                       return ret;
-               }
-               break;
-       }
        case atype_enum_nestable:
        {
                const struct lttng_enum_desc *enum_desc;
@@ -586,8 +584,8 @@ int lttng_create_all_ctx_enums(size_t nr_fields,
  */
 int lttng_session_statedump(struct lttng_session *session)
 {
-       session->statedump_pending = 1;
-       lttng_ust_sockinfo_session_enabled(session->owner);
+       session->priv->statedump_pending = 1;
+       lttng_ust_sockinfo_session_enabled(session->priv->owner);
        return 0;
 }
 
@@ -602,12 +600,12 @@ int lttng_session_enable(struct lttng_session *session)
                goto end;
        }
 
-       notify_socket = lttng_get_notify_socket(session->owner);
+       notify_socket = lttng_get_notify_socket(session->priv->owner);
        if (notify_socket < 0)
                return notify_socket;
 
        /* Set transient enabler state to "enabled" */
-       session->tstate = 1;
+       session->priv->tstate = 1;
 
        /* We need to sync enablers with session before activation. */
        lttng_session_sync_event_enablers(session);
@@ -616,7 +614,7 @@ int lttng_session_enable(struct lttng_session *session)
         * Snapshot the number of events per channel to know the type of header
         * we need to use.
         */
-       cds_list_for_each_entry(chan, &session->chan_head, node) {
+       cds_list_for_each_entry(chan, &session->priv->chan_head, node) {
                const struct lttng_ctx *ctx;
                const struct lttng_ctx_field *fields = NULL;
                size_t nr_fields = 0;
@@ -638,7 +636,7 @@ int lttng_session_enable(struct lttng_session *session)
                }
                ret = ustcomm_register_channel(notify_socket,
                        session,
-                       session->objd,
+                       session->priv->objd,
                        chan->objd,
                        nr_fields,
                        fields,
@@ -657,7 +655,7 @@ int lttng_session_enable(struct lttng_session *session)
 
        /* Set atomically the state to "active" */
        CMM_ACCESS_ONCE(session->active) = 1;
-       CMM_ACCESS_ONCE(session->been_active) = 1;
+       CMM_ACCESS_ONCE(session->priv->been_active) = 1;
 
        ret = lttng_session_statedump(session);
        if (ret)
@@ -678,7 +676,7 @@ int lttng_session_disable(struct lttng_session *session)
        CMM_ACCESS_ONCE(session->active) = 0;
 
        /* Set transient enabler state to "disabled" */
-       session->tstate = 0;
+       session->priv->tstate = 0;
        lttng_session_sync_event_enablers(session);
 end:
        return ret;
@@ -743,16 +741,17 @@ int lttng_event_create(const struct lttng_event_desc *desc,
                struct lttng_channel *chan)
 {
        struct lttng_event *event;
+       struct lttng_ust_event_private *event_priv;
        struct lttng_session *session = chan->session;
        struct cds_hlist_head *head;
        int ret = 0;
        int notify_socket, loglevel;
        const char *uri;
 
-       head = borrow_hash_table_bucket(chan->session->events_ht.table,
+       head = borrow_hash_table_bucket(chan->session->priv->events_ht.table,
                LTTNG_UST_EVENT_HT_SIZE, desc);
 
-       notify_socket = lttng_get_notify_socket(session->owner);
+       notify_socket = lttng_get_notify_socket(session->priv->owner);
        if (notify_socket < 0) {
                ret = notify_socket;
                goto socket_error;
@@ -773,17 +772,36 @@ int lttng_event_create(const struct lttng_event_desc *desc,
                ret = -ENOMEM;
                goto cache_error;
        }
+       event->struct_size = sizeof(struct lttng_event);
+
+       event->parent = zmalloc(sizeof(struct lttng_event_common));
+       if (!event->parent) {
+               ret = -ENOMEM;
+               goto parent_error;
+       }
+       event->parent->struct_size = sizeof(struct lttng_event_common);
+
+       event_priv = zmalloc(sizeof(struct lttng_ust_event_private));
+       if (!event_priv) {
+               ret = -ENOMEM;
+               goto priv_error;
+       }
+       event->priv = event_priv;
+       event_priv->pub = event;
+       event->parent->priv = &event_priv->parent;
+       event_priv->parent.pub = event->parent;
+
        event->chan = chan;
 
        /* Event will be enabled by enabler sync. */
-       event->enabled = 0;
-       event->registered = 0;
-       CDS_INIT_LIST_HEAD(&event->filter_bytecode_runtime_head);
-       CDS_INIT_LIST_HEAD(&event->enablers_ref_head);
-       event->desc = desc;
+       event->parent->enabled = 0;
+       event->parent->priv->registered = 0;
+       CDS_INIT_LIST_HEAD(&event->parent->filter_bytecode_runtime_head);
+       CDS_INIT_LIST_HEAD(&event->parent->priv->enablers_ref_head);
+       event->parent->priv->desc = desc;
 
        if (desc->loglevel)
-               loglevel = *(*event->desc->loglevel);
+               loglevel = *(*event->parent->priv->desc->loglevel);
        else
                loglevel = TRACE_DEFAULT;
        if (desc->u.ext.model_emf_uri)
@@ -794,7 +812,7 @@ int lttng_event_create(const struct lttng_event_desc *desc,
        /* Fetch event ID from sessiond */
        ret = ustcomm_register_event(notify_socket,
                session,
-               session->objd,
+               session->priv->objd,
                chan->objd,
                desc->name,
                loglevel,
@@ -808,11 +826,15 @@ int lttng_event_create(const struct lttng_event_desc *desc,
                goto sessiond_register_error;
        }
 
-       cds_list_add(&event->node, &chan->session->events_head);
-       cds_hlist_add_head(&event->hlist, head);
+       cds_list_add(&event->priv->node, &chan->session->priv->events_head);
+       cds_hlist_add_head(&event->priv->hlist, head);
        return 0;
 
 sessiond_register_error:
+       free(event_priv);
+priv_error:
+       free(event->parent);
+parent_error:
        free(event);
 cache_error:
 create_enum_error:
@@ -975,7 +997,7 @@ static
 int lttng_event_enabler_match_event(struct lttng_event_enabler *event_enabler,
                struct lttng_event *event)
 {
-       if (lttng_desc_match_enabler(event->desc,
+       if (lttng_desc_match_enabler(event->parent->priv->desc,
                        lttng_event_enabler_as_enabler(event_enabler))
                        && event->chan == event_enabler->chan)
                return 1;
@@ -1022,7 +1044,7 @@ void lttng_create_event_if_missing(struct lttng_event_enabler *event_enabler)
        struct lttng_session *session = event_enabler->chan->session;
        struct lttng_probe_desc *probe_desc;
        const struct lttng_event_desc *desc;
-       struct lttng_event *event;
+       struct lttng_ust_event_private *event_priv;
        int i;
        struct cds_list_head *probe_list;
 
@@ -1045,12 +1067,12 @@ void lttng_create_event_if_missing(struct lttng_event_enabler *event_enabler)
                                continue;
 
                        head = borrow_hash_table_bucket(
-                               session->events_ht.table,
+                               session->priv->events_ht.table,
                                LTTNG_UST_EVENT_HT_SIZE, desc);
 
-                       cds_hlist_for_each_entry(event, node, head, hlist) {
-                               if (event->desc == desc
-                                               && event->chan == event_enabler->chan) {
+                       cds_hlist_for_each_entry(event_priv, node, head, hlist) {
+                               if (event_priv->parent.desc == desc
+                                               && event_priv->pub->chan == event_enabler->chan) {
                                        found = true;
                                        break;
                                }
@@ -1083,7 +1105,7 @@ void probe_provider_event_for_each(struct lttng_probe_desc *provider_desc,
        unsigned int i;
 
        /* Get handle on list of sessions. */
-       sessionsp = _lttng_get_sessions();
+       sessionsp = lttng_get_sessions();
 
        /*
         * Iterate over all events in the probe provider descriptions and
@@ -1093,9 +1115,9 @@ void probe_provider_event_for_each(struct lttng_probe_desc *provider_desc,
                const struct lttng_event_desc *event_desc;
                struct lttng_event_notifier_group *event_notifier_group;
                struct lttng_event_notifier *event_notifier;
-               struct lttng_session *session;
+               struct lttng_ust_session_private *session_priv;
                struct cds_hlist_head *head;
-               struct lttng_event *event;
+               struct lttng_ust_event_private *event_priv;
 
                event_desc = provider_desc->event_desc[i];
 
@@ -1103,18 +1125,18 @@ void probe_provider_event_for_each(struct lttng_probe_desc *provider_desc,
                 * Iterate over all session to find the current event
                 * description.
                 */
-               cds_list_for_each_entry(session, sessionsp, node) {
+               cds_list_for_each_entry(session_priv, sessionsp, node) {
                        /*
                         * Get the list of events in the hashtable bucket and
                         * iterate to find the event matching this descriptor.
                         */
                        head = borrow_hash_table_bucket(
-                               session->events_ht.table,
+                               session_priv->events_ht.table,
                                LTTNG_UST_EVENT_HT_SIZE, event_desc);
 
-                       cds_hlist_for_each_entry_safe(event, node, tmp_node, head, hlist) {
-                               if (event_desc == event->desc) {
-                                       event_func(session, event);
+                       cds_hlist_for_each_entry_safe(event_priv, node, tmp_node, head, hlist) {
+                               if (event_desc == event_priv->parent.desc) {
+                                       event_func(session_priv->pub, event_priv->pub);
                                        break;
                                }
                        }
@@ -1158,16 +1180,13 @@ void _event_enum_destroy(struct lttng_session *session,
        unsigned int i;
 
        /* Destroy enums of the current event. */
-       for (i = 0; i < event->desc->nr_fields; i++) {
+       for (i = 0; i < event->parent->priv->desc->nr_fields; i++) {
                const struct lttng_enum_desc *enum_desc;
                const struct lttng_event_field *field;
                struct lttng_enum *curr_enum;
 
-               field = &(event->desc->fields[i]);
+               field = &(event->parent->priv->desc->fields[i]);
                switch (field->type.atype) {
-               case atype_enum:
-                       enum_desc = field->type.u.legacy.basic.enumeration.desc;
-                       break;
                case atype_enum_nestable:
                        enum_desc = field->type.u.enum_nestable.desc;
                        break;
@@ -1201,7 +1220,7 @@ void lttng_probe_provider_unregister_events(
                _lttng_event_notifier_unregister);
 
        /* Wait for grace period. */
-       lttng_ust_synchronize_trace();
+       lttng_ust_urcu_synchronize_rcu();
        /* Prune the unregistration queue. */
        __tracepoint_probe_prune_release_queue();
 
@@ -1221,7 +1240,7 @@ static
 int lttng_event_enabler_ref_events(struct lttng_event_enabler *event_enabler)
 {
        struct lttng_session *session = event_enabler->chan->session;
-       struct lttng_event *event;
+       struct lttng_ust_event_private *event_priv;
 
        if (!lttng_event_enabler_as_enabler(event_enabler)->enabled)
                goto end;
@@ -1230,13 +1249,13 @@ int lttng_event_enabler_ref_events(struct lttng_event_enabler *event_enabler)
        lttng_create_event_if_missing(event_enabler);
 
        /* For each event matching enabler in session event list. */
-       cds_list_for_each_entry(event, &session->events_head, node) {
+       cds_list_for_each_entry(event_priv, &session->priv->events_head, node) {
                struct lttng_enabler_ref *enabler_ref;
 
-               if (!lttng_event_enabler_match_event(event_enabler, event))
+               if (!lttng_event_enabler_match_event(event_enabler, event_priv->pub))
                        continue;
 
-               enabler_ref = lttng_enabler_ref(&event->enablers_ref_head,
+               enabler_ref = lttng_enabler_ref(&event_priv->parent.enablers_ref_head,
                        lttng_event_enabler_as_enabler(event_enabler));
                if (!enabler_ref) {
                        /*
@@ -1249,15 +1268,15 @@ int lttng_event_enabler_ref_events(struct lttng_event_enabler *event_enabler)
                        enabler_ref->ref = lttng_event_enabler_as_enabler(
                                event_enabler);
                        cds_list_add(&enabler_ref->node,
-                               &event->enablers_ref_head);
+                               &event_priv->parent.enablers_ref_head);
                }
 
                /*
                 * Link filter bytecodes if not linked yet.
                 */
-               lttng_enabler_link_bytecode(event->desc,
-                       &session->ctx,
-                       &event->filter_bytecode_runtime_head,
+               lttng_enabler_link_bytecode(event_priv->parent.desc,
+                       &session->priv->ctx,
+                       &event_priv->pub->parent->filter_bytecode_runtime_head,
                        &lttng_event_enabler_as_enabler(event_enabler)->filter_bytecode_head);
 
                /* TODO: merge event context. */
@@ -1273,10 +1292,10 @@ end:
  */
 int lttng_fix_pending_events(void)
 {
-       struct lttng_session *session;
+       struct lttng_ust_session_private *session_priv;
 
-       cds_list_for_each_entry(session, &sessions, node) {
-               lttng_session_lazy_sync_event_enablers(session);
+       cds_list_for_each_entry(session_priv, &sessions, node) {
+               lttng_session_lazy_sync_event_enablers(session_priv->pub);
        }
        return 0;
 }
@@ -1298,7 +1317,7 @@ int lttng_fix_pending_event_notifiers(void)
  */
 void lttng_handle_pending_statedump(void *owner)
 {
-       struct lttng_session *session;
+       struct lttng_ust_session_private *session_priv;
 
        /* Execute state dump */
        do_lttng_ust_statedump(owner);
@@ -1307,12 +1326,12 @@ void lttng_handle_pending_statedump(void *owner)
        if (ust_lock()) {
                goto end;
        }
-       cds_list_for_each_entry(session, &sessions, node) {
-               if (session->owner != owner)
+       cds_list_for_each_entry(session_priv, &sessions, node) {
+               if (session_priv->owner != owner)
                        continue;
-               if (!session->statedump_pending)
+               if (!session_priv->statedump_pending)
                        continue;
-               session->statedump_pending = 0;
+               session_priv->statedump_pending = 0;
        }
 end:
        ust_unlock();
@@ -1328,16 +1347,18 @@ void _lttng_event_destroy(struct lttng_event *event)
        struct lttng_enabler_ref *enabler_ref, *tmp_enabler_ref;
 
        /* Remove from event list. */
-       cds_list_del(&event->node);
+       cds_list_del(&event->priv->node);
        /* Remove from event hash table. */
-       cds_hlist_del(&event->hlist);
+       cds_hlist_del(&event->priv->hlist);
 
        lttng_destroy_context(event->ctx);
        lttng_free_event_filter_runtime(event);
        /* Free event enabler refs */
        cds_list_for_each_entry_safe(enabler_ref, tmp_enabler_ref,
-                       &event->enablers_ref_head, node)
+                       &event->parent->priv->enablers_ref_head, node)
                free(enabler_ref);
+       free(event->priv);
+       free(event->parent);
        free(event);
 }
 
@@ -1351,10 +1372,10 @@ void _lttng_enum_destroy(struct lttng_enum *_enum)
 
 void lttng_ust_events_exit(void)
 {
-       struct lttng_session *session, *tmpsession;
+       struct lttng_ust_session_private *session_priv, *tmpsession_priv;
 
-       cds_list_for_each_entry_safe(session, tmpsession, &sessions, node)
-               lttng_session_destroy(session);
+       cds_list_for_each_entry_safe(session_priv, tmpsession_priv, &sessions, node)
+               lttng_session_destroy(session_priv->pub);
 }
 
 /*
@@ -1378,7 +1399,7 @@ struct lttng_event_enabler *lttng_event_enabler_create(
        event_enabler->chan = chan;
        /* ctx left NULL */
        event_enabler->base.enabled = 0;
-       cds_list_add(&event_enabler->node, &event_enabler->chan->session->enablers_head);
+       cds_list_add(&event_enabler->node, &event_enabler->chan->session->priv->enablers_head);
        lttng_session_lazy_sync_event_enablers(event_enabler->chan->session);
 
        return event_enabler;
@@ -1547,7 +1568,7 @@ int lttng_attach_context(struct lttng_ust_context *context_param,
         * session because the metadata does not allow expressing this
         * information outside of the original channel scope.
         */
-       if (session->been_active)
+       if (session->priv->been_active)
                return -EPERM;
 
        switch (context_param->ctx) {
@@ -1637,23 +1658,23 @@ static
 void lttng_session_sync_event_enablers(struct lttng_session *session)
 {
        struct lttng_event_enabler *event_enabler;
-       struct lttng_event *event;
+       struct lttng_ust_event_private *event_priv;
 
-       cds_list_for_each_entry(event_enabler, &session->enablers_head, node)
+       cds_list_for_each_entry(event_enabler, &session->priv->enablers_head, node)
                lttng_event_enabler_ref_events(event_enabler);
        /*
         * For each event, if at least one of its enablers is enabled,
         * and its channel and session transient states are enabled, we
         * enable the event, else we disable it.
         */
-       cds_list_for_each_entry(event, &session->events_head, node) {
+       cds_list_for_each_entry(event_priv, &session->priv->events_head, node) {
                struct lttng_enabler_ref *enabler_ref;
                struct lttng_bytecode_runtime *runtime;
                int enabled = 0, has_enablers_without_bytecode = 0;
 
                /* Enable events */
                cds_list_for_each_entry(enabler_ref,
-                               &event->enablers_ref_head, node) {
+                               &event_priv->parent.enablers_ref_head, node) {
                        if (enabler_ref->ref->enabled) {
                                enabled = 1;
                                break;
@@ -1664,36 +1685,36 @@ void lttng_session_sync_event_enablers(struct lttng_session *session)
                 * intesection of session and channel transient enable
                 * states.
                 */
-               enabled = enabled && session->tstate && event->chan->tstate;
+               enabled = enabled && session->priv->tstate && event_priv->pub->chan->tstate;
 
-               CMM_STORE_SHARED(event->enabled, enabled);
+               CMM_STORE_SHARED(event_priv->pub->parent->enabled, enabled);
                /*
                 * Sync tracepoint registration with event enabled
                 * state.
                 */
                if (enabled) {
-                       if (!event->registered)
-                               register_event(event);
+                       if (!event_priv->parent.registered)
+                               register_event(event_priv->pub);
                } else {
-                       if (event->registered)
-                               unregister_event(event);
+                       if (event_priv->parent.registered)
+                               unregister_event(event_priv->pub);
                }
 
                /* Check if has enablers without bytecode enabled */
                cds_list_for_each_entry(enabler_ref,
-                               &event->enablers_ref_head, node) {
+                               &event_priv->parent.enablers_ref_head, node) {
                        if (enabler_ref->ref->enabled
                                        && cds_list_empty(&enabler_ref->ref->filter_bytecode_head)) {
                                has_enablers_without_bytecode = 1;
                                break;
                        }
                }
-               event->has_enablers_without_bytecode =
+               event_priv->pub->parent->has_enablers_without_bytecode =
                        has_enablers_without_bytecode;
 
                /* Enable filters */
                cds_list_for_each_entry(runtime,
-                               &event->filter_bytecode_runtime_head, node) {
+                               &event_priv->pub->parent->filter_bytecode_runtime_head, node) {
                        lttng_bytecode_filter_sync_state(runtime);
                }
        }
@@ -1948,25 +1969,25 @@ void lttng_ust_context_set_session_provider(const char *name,
                void (*get_value)(struct lttng_ctx_field *field,
                        struct lttng_ctx_value *value))
 {
-       struct lttng_session *session;
+       struct lttng_ust_session_private *session_priv;
 
-       cds_list_for_each_entry(session, &sessions, node) {
+       cds_list_for_each_entry(session_priv, &sessions, node) {
                struct lttng_channel *chan;
-               struct lttng_event *event;
+               struct lttng_ust_event_private *event_priv;
                int ret;
 
-               ret = lttng_ust_context_set_provider_rcu(&session->ctx,
+               ret = lttng_ust_context_set_provider_rcu(&session_priv->ctx,
                                name, get_size, record, get_value);
                if (ret)
                        abort();
-               cds_list_for_each_entry(chan, &session->chan_head, node) {
+               cds_list_for_each_entry(chan, &session_priv->chan_head, node) {
                        ret = lttng_ust_context_set_provider_rcu(&chan->ctx,
                                        name, get_size, record, get_value);
                        if (ret)
                                abort();
                }
-               cds_list_for_each_entry(event, &session->events_head, node) {
-                       ret = lttng_ust_context_set_provider_rcu(&event->ctx,
+               cds_list_for_each_entry(event_priv, &session_priv->events_head, node) {
+                       ret = lttng_ust_context_set_provider_rcu(&event_priv->pub->ctx,
                                        name, get_size, record, get_value);
                        if (ret)
                                abort();
This page took 0.035807 seconds and 4 git commands to generate.