loglevel enable fix: enable event names, not loglevel
[lttng-ust.git] / liblttng-ust / ltt-probes.c
index 2994512825660596060f8875915c026d3f01dc71..25eb3f608c95cb6cf1e3f8708ca2133c7d538c7e 100644 (file)
@@ -239,28 +239,35 @@ void _probes_create_loglevel_events(struct loglevel_entry *entry,
                                struct session_loglevel *loglevel)
 {
        struct lttng_probe_desc *probe_desc;
+       struct lttng_ust_event event_param;
        int i;
 
        cds_list_for_each_entry(probe_desc, &probe_list, head) {
                for (i = 0; i < probe_desc->nr_events; i++) {
                        const struct tracepoint_loglevel_entry *ev_ll;
+                       const struct lttng_event_desc *event_desc;
 
-                       if (!(probe_desc->event_desc[i]->loglevel))
+                       event_desc = probe_desc->event_desc[i];
+                       if (!(event_desc->loglevel))
                                continue;
-                       ev_ll = *probe_desc->event_desc[i]->loglevel;
+                       ev_ll = *event_desc->loglevel;
                        if (!strcmp(ev_ll->identifier, entry->name)) {
                                struct ltt_event *ev;
                                int ret;
 
+                               memcpy(&event_param, &loglevel->event_param,
+                                               sizeof(event_param));
+                               memcpy(event_param.name,
+                                       event_desc->name,
+                                       sizeof(event_param.name));
                                /* create event */
                                ret = ltt_event_create(loglevel->chan,
-                                       &loglevel->event_param, NULL,
+                                       &event_param, NULL,
                                        &ev);
-                               /*
-                                * TODO: report error.
-                                */
-                               if (ret)
+                               if (ret) {
+                                       DBG("Error creating event");
                                        continue;
+                               }
                                cds_list_add(&ev->loglevel_list,
                                        &loglevel->events);
                        }
@@ -303,6 +310,7 @@ struct session_loglevel *add_loglevel(const char *name,
                        return ERR_PTR(-ENOMEM);
                memcpy(&e->name[0], name, name_len);
                cds_hlist_add_head(&e->hlist, head);
+               CDS_INIT_LIST_HEAD(&e->session_list);
        }
 
        /* session loglevel */
@@ -318,9 +326,11 @@ struct session_loglevel *add_loglevel(const char *name,
        sl->chan = chan;
        sl->enabled = 1;
        memcpy(&sl->event_param, event_param, sizeof(sl->event_param));
+       sl->event_param.instrumentation = LTTNG_UST_TRACEPOINT;
        CDS_INIT_LIST_HEAD(&sl->events);
        cds_list_add(&sl->list, &chan->session->loglevels);
        cds_list_add(&sl->session_list, &e->session_list);
+       sl->entry = e;
        _probes_create_loglevel_events(e, sl);
        return sl;
 }
This page took 0.023274 seconds and 4 git commands to generate.