X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Ftrace-ust.c;h=c8b3b72f91ca3343a9a507dd343d5447ea6eb323;hp=236e7685b5900cf14362af6a1e8202911604f28b;hb=fc4705fe99b46c430112590c66abd74e4191c388;hpb=300b8fd5c7921b094f69847164ff58d889f11be6 diff --git a/src/bin/lttng-sessiond/trace-ust.c b/src/bin/lttng-sessiond/trace-ust.c index 236e7685b..c8b3b72f9 100644 --- a/src/bin/lttng-sessiond/trace-ust.c +++ b/src/bin/lttng-sessiond/trace-ust.c @@ -1,18 +1,18 @@ /* * Copyright (C) 2011 - David Goulet * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; only version 2 of the License. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License, version 2 only, + * as published by the Free Software Foundation. * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _GNU_SOURCE @@ -85,8 +85,8 @@ error: * * Return pointer to structure or NULL. */ -struct ltt_ust_session *trace_ust_create_session(char *path, int session_id, - struct lttng_domain *domain) +struct ltt_ust_session *trace_ust_create_session(char *path, + unsigned int session_id, struct lttng_domain *domain) { int ret; struct ltt_ust_session *lus; @@ -121,6 +121,9 @@ struct ltt_ust_session *trace_ust_create_session(char *path, int session_id, return lus; error_free_session: + lttng_ht_destroy(lus->domain_global.channels); + lttng_ht_destroy(lus->domain_exec); + lttng_ht_destroy(lus->domain_pid); free(lus); error: return NULL; @@ -139,7 +142,7 @@ struct ltt_ust_channel *trace_ust_create_channel(struct lttng_channel *chan, luc = zmalloc(sizeof(struct ltt_ust_channel)); if (luc == NULL) { - perror("ltt_ust_channel zmalloc"); + PERROR("ltt_ust_channel zmalloc"); goto error; } @@ -171,7 +174,7 @@ struct ltt_ust_channel *trace_ust_create_channel(struct lttng_channel *chan, /* Set trace output path */ ret = snprintf(luc->pathname, PATH_MAX, "%s", path); if (ret < 0) { - perror("asprintf ust create channel"); + PERROR("asprintf ust create channel"); goto error_free_channel; } @@ -180,6 +183,8 @@ struct ltt_ust_channel *trace_ust_create_channel(struct lttng_channel *chan, return luc; error_free_channel: + lttng_ht_destroy(luc->ctx); + lttng_ht_destroy(luc->events); free(luc); error: return NULL; @@ -225,20 +230,21 @@ struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev) switch (ev->loglevel_type) { case LTTNG_EVENT_LOGLEVEL_ALL: lue->attr.loglevel_type = LTTNG_UST_LOGLEVEL_ALL; + lue->attr.loglevel = -1; /* Force to -1 */ break; case LTTNG_EVENT_LOGLEVEL_RANGE: lue->attr.loglevel_type = LTTNG_UST_LOGLEVEL_RANGE; + lue->attr.loglevel = ev->loglevel; break; case LTTNG_EVENT_LOGLEVEL_SINGLE: lue->attr.loglevel_type = LTTNG_UST_LOGLEVEL_SINGLE; + lue->attr.loglevel = ev->loglevel; break; default: - ERR("Unknown ust loglevel type (%d)", ev->type); + ERR("Unknown ust loglevel type (%d)", ev->loglevel_type); goto error_free_event; } - /* Copy loglevel */ - lue->attr.loglevel = ev->loglevel; /* Init node */ lttng_ht_node_init_str(&lue->node, lue->attr.name); @@ -252,6 +258,7 @@ struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev) return lue; error_free_event: + lttng_ht_destroy(lue->ctx); free(lue); error: return NULL; @@ -269,7 +276,7 @@ struct ltt_ust_metadata *trace_ust_create_metadata(char *path) lum = zmalloc(sizeof(struct ltt_ust_metadata)); if (lum == NULL) { - perror("ust metadata zmalloc"); + PERROR("ust metadata zmalloc"); goto error; } @@ -285,7 +292,7 @@ struct ltt_ust_metadata *trace_ust_create_metadata(char *path) /* Set metadata trace path */ ret = snprintf(lum->pathname, PATH_MAX, "%s/metadata", path); if (ret < 0) { - perror("asprintf ust metadata"); + PERROR("asprintf ust metadata"); goto error_free_metadata; } @@ -452,8 +459,10 @@ static void destroy_channel_rcu(struct rcu_head *head) */ void trace_ust_destroy_metadata(struct ltt_ust_metadata *metadata) { + if (!metadata->handle) { + return; + } DBG2("Trace UST destroy metadata %d", metadata->handle); - free(metadata); } @@ -535,7 +544,7 @@ void trace_ust_destroy_session(struct ltt_ust_session *session) rcu_read_lock(); - DBG2("Trace UST destroy session %d", session->id); + DBG2("Trace UST destroy session %u", session->id); /* Cleaning up UST domain */ destroy_domain_global(&session->domain_global);