X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fcmd.c;h=d2673a9019044a40af39341795c42f566d3ce03f;hp=0cc71303aeb6704de4bc926f39d0e2acbf58bc39;hb=c6aa2d41cdd9daddc133e43cf6e1f2daae818cdd;hpb=930a2e995548ba32bfe27d996e306a07f1129b8a diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c index 0cc71303a..d2673a901 100644 --- a/src/bin/lttng-sessiond/cmd.c +++ b/src/bin/lttng-sessiond/cmd.c @@ -185,25 +185,25 @@ static void list_lttng_channels(int domain, struct ltt_session *session, } /* - * Create a list of JUL domain events. + * Create a list of agent domain events. * * Return number of events in list on success or else a negative value. */ -static int list_lttng_jul_events(struct jul_domain *dom, +static int list_lttng_agent_events(struct agent *agt, struct lttng_event **events) { int i = 0, ret = 0; unsigned int nb_event = 0; - struct jul_event *event; + struct agent_event *event; struct lttng_event *tmp_events; struct lttng_ht_iter iter; - assert(dom); + assert(agt); assert(events); - DBG3("Listing JUL events"); + DBG3("Listing agent events"); - nb_event = lttng_ht_get_count(dom->events); + nb_event = lttng_ht_get_count(agt->events); if (nb_event == 0) { ret = nb_event; goto error; @@ -211,13 +211,13 @@ static int list_lttng_jul_events(struct jul_domain *dom, tmp_events = zmalloc(nb_event * sizeof(*tmp_events)); if (!tmp_events) { - PERROR("zmalloc JUL events session"); + PERROR("zmalloc agent events session"); ret = -LTTNG_ERR_FATAL; goto error; } rcu_read_lock(); - cds_lfht_for_each_entry(dom->events->ht, &iter.iter, event, node.node) { + cds_lfht_for_each_entry(agt->events->ht, &iter.iter, event, node.node) { strncpy(tmp_events[i].name, event->name, sizeof(tmp_events[i].name)); tmp_events[i].name[sizeof(tmp_events[i].name) - 1] = '\0'; tmp_events[i].enabled = event->enabled; @@ -1071,13 +1071,21 @@ int cmd_disable_event(struct ltt_session *session, int domain, channel_name); break; } + case LTTNG_DOMAIN_LOG4J: case LTTNG_DOMAIN_JUL: { + struct agent *agt; struct ltt_ust_session *usess = session->ust_session; assert(usess); - ret = event_jul_disable(usess, event_name); + agt = trace_ust_find_agent(usess, domain); + if (!agt) { + ret = -LTTNG_ERR_UST_EVENT_NOT_FOUND; + goto error; + } + + ret = event_agent_disable(usess, agt, event_name); if (ret != LTTNG_OK) { goto error; } @@ -1176,13 +1184,21 @@ int cmd_disable_event_all(struct ltt_session *session, int domain, break; } + case LTTNG_DOMAIN_LOG4J: case LTTNG_DOMAIN_JUL: { + struct agent *agt; struct ltt_ust_session *usess = session->ust_session; assert(usess); - ret = event_jul_disable_all(usess); + agt = trace_ust_find_agent(usess, domain); + if (!agt) { + ret = -LTTNG_ERR_UST_EVENT_NOT_FOUND; + goto error; + } + + ret = event_agent_disable_all(usess, agt); if (ret != LTTNG_OK) { goto error; } @@ -1466,25 +1482,37 @@ int cmd_enable_event(struct ltt_session *session, struct lttng_domain *domain, } break; } + case LTTNG_DOMAIN_LOG4J: case LTTNG_DOMAIN_JUL: { + const char *default_event_name, *default_chan_name; + struct agent *agt; struct lttng_event uevent; struct lttng_domain tmp_dom; struct ltt_ust_session *usess = session->ust_session; assert(usess); - /* Create the default JUL tracepoint. */ + agt = trace_ust_find_agent(usess, domain->type); + if (!agt) { + agt = agent_create(domain->type); + if (!agt) { + ret = -LTTNG_ERR_NOMEM; + goto error; + } + agent_add(agt, usess->agents); + } + + /* Create the default tracepoint. */ memset(&uevent, 0, sizeof(uevent)); uevent.type = LTTNG_EVENT_TRACEPOINT; uevent.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL; - if (is_root) { - strncpy(uevent.name, DEFAULT_SYS_JUL_EVENT_NAME, - sizeof(uevent.name)); - } else { - strncpy(uevent.name, DEFAULT_USER_JUL_EVENT_NAME, - sizeof(uevent.name)); + default_event_name = event_get_default_agent_ust_name(domain->type); + if (!default_event_name) { + ret = -LTTNG_ERR_FATAL; + goto error; } + strncpy(uevent.name, default_event_name, sizeof(uevent.name)); uevent.name[sizeof(uevent.name) - 1] = '\0'; /* @@ -1495,7 +1523,13 @@ int cmd_enable_event(struct ltt_session *session, struct lttng_domain *domain, memcpy(&tmp_dom, domain, sizeof(tmp_dom)); tmp_dom.type = LTTNG_DOMAIN_UST; - ret = cmd_enable_event(session, &tmp_dom, DEFAULT_JUL_CHANNEL_NAME, + if (domain->type == LTTNG_DOMAIN_LOG4J) { + default_chan_name = DEFAULT_LOG4J_CHANNEL_NAME; + } else { + default_chan_name = DEFAULT_JUL_CHANNEL_NAME; + } + + ret = cmd_enable_event(session, &tmp_dom, (char *) default_chan_name, &uevent, filter_expression, filter, NULL, wpipe); if (ret != LTTNG_OK && ret != LTTNG_ERR_UST_EVENT_ENABLED) { goto error; @@ -1503,9 +1537,9 @@ int cmd_enable_event(struct ltt_session *session, struct lttng_domain *domain, /* The wild card * means that everything should be enabled. */ if (strncmp(event->name, "*", 1) == 0 && strlen(event->name) == 1) { - ret = event_jul_enable_all(usess, event, filter); + ret = event_agent_enable_all(usess, agt, event, filter); } else { - ret = event_jul_enable(usess, event, filter); + ret = event_agent_enable(usess, agt, event, filter); } if (ret != LTTNG_OK) { goto error; @@ -1687,47 +1721,22 @@ int cmd_enable_event_all(struct ltt_session *session, break; } + case LTTNG_DOMAIN_LOG4J: case LTTNG_DOMAIN_JUL: { - struct lttng_event uevent, event; - struct lttng_domain tmp_dom; + struct lttng_event event; struct ltt_ust_session *usess = session->ust_session; assert(usess); - /* Create the default JUL tracepoint. */ - uevent.type = LTTNG_EVENT_TRACEPOINT; - uevent.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL; - if (is_root) { - strncpy(uevent.name, DEFAULT_SYS_JUL_EVENT_NAME, - sizeof(uevent.name)); - } else { - strncpy(uevent.name, DEFAULT_USER_JUL_EVENT_NAME, - sizeof(uevent.name)); - } - uevent.name[sizeof(uevent.name) - 1] = '\0'; - - /* - * The domain type is changed because we are about to enable the - * default channel and event for the JUL domain that are hardcoded. - * This happens in the UST domain. - */ - memcpy(&tmp_dom, domain, sizeof(tmp_dom)); - tmp_dom.type = LTTNG_DOMAIN_UST; - - ret = cmd_enable_event(session, &tmp_dom, DEFAULT_JUL_CHANNEL_NAME, - &uevent, NULL, NULL, NULL, wpipe); - if (ret != LTTNG_OK && ret != LTTNG_ERR_UST_EVENT_ENABLED) { - goto error; - } - event.loglevel = LTTNG_LOGLEVEL_JUL_ALL; event.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL; strncpy(event.name, "*", sizeof(event.name)); event.name[sizeof(event.name) - 1] = '\0'; - ret = event_jul_enable_all(usess, &event, filter); - if (ret != LTTNG_OK) { + ret = cmd_enable_event(session, domain, NULL, &event, + filter_expression, filter, NULL, wpipe); + if (ret != LTTNG_OK && ret != LTTNG_ERR_UST_EVENT_ENABLED) { goto error; } @@ -1774,8 +1783,9 @@ ssize_t cmd_list_tracepoints(int domain, struct lttng_event **events) goto error; } break; + case LTTNG_DOMAIN_LOG4J: case LTTNG_DOMAIN_JUL: - nb_events = jul_list_events(events); + nb_events = agent_list_events(events, domain); if (nb_events < 0) { ret = LTTNG_ERR_UST_LIST_FAIL; goto error; @@ -2370,6 +2380,8 @@ ssize_t cmd_list_domains(struct ltt_session *session, { int ret, index = 0; ssize_t nb_dom = 0; + struct agent *agt; + struct lttng_ht_iter iter; if (session->kernel_session != NULL) { DBG3("Listing domains found kernel domain"); @@ -2380,8 +2392,11 @@ ssize_t cmd_list_domains(struct ltt_session *session, DBG3("Listing domains found UST global domain"); nb_dom++; - if (session->ust_session->domain_jul.being_used) { - nb_dom++; + cds_lfht_for_each_entry(session->ust_session->agents->ht, &iter.iter, + agt, node.node) { + if (agt->being_used) { + nb_dom++; + } } } @@ -2401,10 +2416,13 @@ ssize_t cmd_list_domains(struct ltt_session *session, (*domains)[index].buf_type = session->ust_session->buffer_type; index++; - if (session->ust_session->domain_jul.being_used) { - (*domains)[index].type = LTTNG_DOMAIN_JUL; - (*domains)[index].buf_type = session->ust_session->buffer_type; - index++; + cds_lfht_for_each_entry(session->ust_session->agents->ht, &iter.iter, + agt, node.node) { + if (agt->being_used) { + (*domains)[index].type = agt->domain; + (*domains)[index].buf_type = session->ust_session->buffer_type; + index++; + } } } @@ -2496,10 +2514,16 @@ ssize_t cmd_list_events(int domain, struct ltt_session *session, } break; } + case LTTNG_DOMAIN_LOG4J: case LTTNG_DOMAIN_JUL: if (session->ust_session) { - nb_event = list_lttng_jul_events( - &session->ust_session->domain_jul, events); + struct lttng_ht_iter iter; + struct agent *agt; + + cds_lfht_for_each_entry(session->ust_session->agents->ht, + &iter.iter, agt, node.node) { + nb_event = list_lttng_agent_events(agt, events); + } } break; default: