X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=liblttng-ust%2Fltt-probes.c;h=25eb3f608c95cb6cf1e3f8708ca2133c7d538c7e;hb=7ee3cc563d8512f73f9f7379510ebf1673eb88a8;hp=2994512825660596060f8875915c026d3f01dc71;hpb=574a6217af27f0e1ca8998790ce7744684d83168;p=lttng-ust.git diff --git a/liblttng-ust/ltt-probes.c b/liblttng-ust/ltt-probes.c index 29945128..25eb3f60 100644 --- a/liblttng-ust/ltt-probes.c +++ b/liblttng-ust/ltt-probes.c @@ -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; }