X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Futils.c;h=06df5090ac767307eb37328d418c49b6fc7ca922;hb=0d5a66ffc18fe9abe115c66b664df71084ad1fc6;hp=ea9108fba5e207a0830e4468f492caea6b3ab1dc;hpb=890d8fe47755c3bad936389cf48ffa141cff41c9;p=lttng-tools.git diff --git a/src/bin/lttng/utils.c b/src/bin/lttng/utils.c index ea9108fba..06df5090a 100644 --- a/src/bin/lttng/utils.c +++ b/src/bin/lttng/utils.c @@ -25,9 +25,12 @@ #include #include #include +#include +#include #include #include +#include #include "conf.h" #include "utils.h" @@ -415,3 +418,82 @@ int print_missing_or_multiple_domains(unsigned int sum) return ret; } + +/* + * Get the discarded events and lost packet counts. + */ +void print_session_stats(const char *session_name) +{ + int count, nb_domains, domain_idx, channel_idx; + struct lttng_domain *domains; + struct lttng_channel *channels; + uint64_t discarded_total = 0, lost_total = 0; + + nb_domains = lttng_list_domains(session_name, &domains); + if (nb_domains < 0) { + goto end; + } + for (domain_idx = 0; domain_idx < nb_domains; domain_idx++) { + struct lttng_handle *handle = lttng_create_handle(session_name, + &domains[domain_idx]); + + if (!handle) { + ERR("Failed to create session handle while printing session stats."); + goto end; + } + + count = lttng_list_channels(handle, &channels); + for (channel_idx = 0; channel_idx < count; channel_idx++) { + int ret; + uint64_t discarded = 0, lost = 0; + struct lttng_channel *channel = &channels[channel_idx]; + + ret = lttng_channel_get_discarded_event_count(channel, + &discarded); + if (ret) { + ERR("Failed to retrieve discarded event count from channel %s", + channel->name); + } + + ret = lttng_channel_get_lost_packet_count(channel, + &lost); + if (ret) { + ERR("Failed to retrieve lost packet count from channel %s", + channel->name); + } + + discarded_total += discarded; + lost_total += lost; + } + lttng_destroy_handle(handle); + } + if (discarded_total > 0) { + MSG("[warning] %" PRIu64 " events discarded, please refer to " + "the documentation on channel configuration.", + discarded_total); + } + if (lost_total > 0) { + MSG("[warning] %" PRIu64 " packets lost, please refer to " + "the documentation on channel configuration.", + lost_total); + } + +end: + return; +} + +int show_cmd_help(const char *cmd_name, const char *help_msg) +{ + int ret; + char page_name[32]; + + ret = sprintf(page_name, "lttng-%s", cmd_name); + assert(ret > 0 && ret < 32); + ret = utils_show_help(1, page_name, help_msg); + if (ret && !help_msg) { + ERR("Cannot view man page `lttng-%s(1)`", cmd_name); + perror("exec"); + } + + return ret; +}