fix: Unify possible CPU number fallback
[lttng-ust.git] / liblttng-ust / lttng-events.c
index 57eb6f7f3a2c745e77191f7ba9b00d1234383f71..529e33d820f600151a19e0e4e925e02ad77982dd 100644 (file)
@@ -257,21 +257,19 @@ int lttng_enum_create(const struct lttng_enum_desc *desc,
        const char *enum_name = desc->name;
        struct lttng_enum *_enum;
        struct cds_hlist_head *head;
-       struct cds_hlist_node *node;
        int ret = 0;
        size_t name_len = strlen(enum_name);
        uint32_t hash;
        int notify_socket;
 
+       /* 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)];
-       cds_hlist_for_each_entry(_enum, node, head, hlist) {
-               assert(_enum->desc);
-               if (!strncmp(_enum->desc->name, desc->name,
-                               LTTNG_UST_SYM_NAME_LEN - 1)) {
-                       ret = -EEXIST;
-                       goto exist;
-               }
+
+       _enum = lttng_ust_enum_get_from_desc(session, desc);
+       if (_enum) {
+               ret = -EEXIST;
+               goto exist;
        }
 
        notify_socket = lttng_get_notify_socket(session->owner);
@@ -768,8 +766,10 @@ void lttng_create_event_if_missing(struct lttng_enabler *enabler)
                        head = &session->events_ht.table[hash & (LTTNG_UST_EVENT_HT_SIZE - 1)];
                        cds_hlist_for_each_entry(event, node, head, hlist) {
                                if (event->desc == desc
-                                               && event->chan == enabler->chan)
+                                               && event->chan == enabler->chan) {
                                        found = 1;
+                                       break;
+                               }
                        }
                        if (found)
                                continue;
@@ -800,7 +800,7 @@ void lttng_probe_provider_unregister_events(struct lttng_probe_desc *provider_de
        struct lttng_session *session;
        struct cds_hlist_head *head;
        struct lttng_event *event;
-       int i;
+       unsigned int i, j;
 
        /* Get handle on list of sessions. */
        sessionsp = _lttng_get_sessions();
@@ -903,6 +903,9 @@ int lttng_enabler_ref_events(struct lttng_enabler *enabler)
        struct lttng_session *session = enabler->chan->session;
        struct lttng_event *event;
 
+       if (!enabler->enabled)
+               goto end;
+
        /* First ensure that probe events are created for this enabler. */
        lttng_create_event_if_missing(enabler);
 
@@ -934,6 +937,7 @@ int lttng_enabler_ref_events(struct lttng_enabler *enabler)
 
                /* TODO: merge event context. */
        }
+end:
        return 0;
 }
 
This page took 0.02431 seconds and 4 git commands to generate.