X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Futils.c;h=f84859fc621645aea1939d7c04648c7ac729682a;hp=2ff57cd1465c6071eb0d89705b061ef3dafac05f;hb=505b2d90aa87592186ecc2a119cf67fb3f90d168;hpb=6cd525e813795a1d5e38feac8dedf2c73ffb1274 diff --git a/src/bin/lttng-sessiond/utils.c b/src/bin/lttng-sessiond/utils.c index 2ff57cd14..f84859fc6 100644 --- a/src/bin/lttng-sessiond/utils.c +++ b/src/bin/lttng-sessiond/utils.c @@ -1,28 +1,19 @@ /* - * Copyright (C) 2011 - David Goulet - * Mathieu Desnoyers + * Copyright (C) 2011 David Goulet + * Copyright (C) 2011 Mathieu Desnoyers * - * 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. + * SPDX-License-Identifier: GPL-2.0-only * - * 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., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#define _GNU_SOURCE +#define _LGPL_SOURCE #include #include #include #include "utils.h" +#include "snapshot.h" #include "lttng-sessiond.h" int ht_cleanup_pipe[2] = { -1, -1 }; @@ -52,6 +43,9 @@ void ht_cleanup_push(struct lttng_ht *ht) ssize_t ret; int fd = ht_cleanup_pipe[1]; + if (!ht) { + return; + } if (fd < 0) return; ret = lttng_write(fd, &ht, sizeof(ht)); @@ -68,3 +62,39 @@ void ht_cleanup_push(struct lttng_ht *ht) error: assert(!ret); } + +int loglevels_match(int a_loglevel_type, int a_loglevel_value, + int b_loglevel_type, int b_loglevel_value, int loglevel_all_type) +{ + int match = 1; + + if (a_loglevel_type == b_loglevel_type) { + /* Same loglevel type. */ + if (b_loglevel_type != loglevel_all_type) { + /* + * Loglevel value must also match since the loglevel + * type is not all. + */ + if (a_loglevel_value != b_loglevel_value) { + match = 0; + } + } + } else { + /* Loglevel type is different: no match. */ + match = 0; + } + + return match; +} + +const char *session_get_base_path(const struct ltt_session *session) +{ + return consumer_output_get_base_path(session->consumer); +} + +const char *consumer_output_get_base_path(const struct consumer_output *output) +{ + return output->type == CONSUMER_DST_LOCAL ? + output->dst.session_root_path : + output->dst.net.base_dir; +}