/*
- * Copyright (C) 2012 - Julien Desfossez <julien.desfossez@efficios.com>
- * David Goulet <dgoulet@efficios.com>
+ * Copyright (C) 2012 Julien Desfossez <julien.desfossez@efficios.com>
+ * Copyright (C) 2012 David Goulet <dgoulet@efficios.com>
*
- * 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 _LGPL_SOURCE
#include <inttypes.h>
#include <signal.h>
-#include <bin/lttng-sessiond/ust-ctl.h>
#include <bin/lttng-consumerd/health-consumerd.h>
#include <common/common.h>
#include <common/compat/endian.h>
* deadlocks.
*/
static void metadata_switch_timer(struct lttng_consumer_local_data *ctx,
- int sig, siginfo_t *si)
+ siginfo_t *si)
{
int ret;
struct lttng_consumer_channel *channel;
* Execute action on a live timer
*/
static void live_timer(struct lttng_consumer_local_data *ctx,
- int sig, siginfo_t *si)
+ siginfo_t *si)
{
int ret;
struct lttng_consumer_channel *channel;
sample_positions_cb sample, get_consumed_cb get_consumed,
get_produced_cb get_produced)
{
- int ret;
+ int ret = 0;
struct lttng_ht_iter iter;
struct lttng_consumer_stream *stream;
bool empty_channel = true;
* Execute action on a monitor timer.
*/
static
-void monitor_timer(struct lttng_consumer_local_data *ctx,
- struct lttng_consumer_channel *channel)
+void monitor_timer(struct lttng_consumer_channel *channel)
{
int ret;
int channel_monitor_pipe =
sample_positions_cb sample;
get_consumed_cb get_consumed;
get_produced_cb get_produced;
+ uint64_t lowest = 0, highest = 0, total_consumed = 0;
assert(channel);
abort();
}
- ret = sample_channel_positions(channel, &msg.highest, &msg.lowest,
- &msg.total_consumed, sample, get_consumed, get_produced);
+ ret = sample_channel_positions(channel, &highest, &lowest,
+ &total_consumed, sample, get_consumed, get_produced);
if (ret) {
return;
}
+ msg.highest = highest;
+ msg.lowest = lowest;
+ msg.total_consumed = total_consumed;
/*
* Writes performed here are assumed to be atomic which is only
}
continue;
} else if (signr == LTTNG_CONSUMER_SIG_SWITCH) {
- metadata_switch_timer(ctx, info.si_signo, &info);
+ metadata_switch_timer(ctx, &info);
} else if (signr == LTTNG_CONSUMER_SIG_TEARDOWN) {
cmm_smp_mb();
CMM_STORE_SHARED(timer_signal.qs_done, 1);
cmm_smp_mb();
DBG("Signal timer metadata thread teardown");
} else if (signr == LTTNG_CONSUMER_SIG_LIVE) {
- live_timer(ctx, info.si_signo, &info);
+ live_timer(ctx, &info);
} else if (signr == LTTNG_CONSUMER_SIG_MONITOR) {
struct lttng_consumer_channel *channel;
channel = info.si_value.sival_ptr;
- monitor_timer(ctx, channel);
+ monitor_timer(channel);
} else if (signr == LTTNG_CONSUMER_SIG_EXIT) {
assert(CMM_LOAD_SHARED(consumer_quit));
goto end;