Extract the lost packets and discarded events counters
[lttng-tools.git] / src / bin / lttng / commands / list.c
index efa1abfd0751e4c9f7858114cbf7009a94ae0a2d..8e69e09efdc6bb85be8206a05d2d703a606f7ab0 100644 (file)
@@ -211,9 +211,9 @@ static char *get_exclusion_names_msg(struct lttng_event *event)
        int exclusion_count;
        char *exclusion_msg = NULL;
        char *at;
-       int count;
        size_t i;
        const char * const exclusion_fmt = " [exclusions: ";
+       const size_t exclusion_fmt_len = strlen(exclusion_fmt);
 
        exclusion_count = lttng_event_get_exclusion_name_count(event);
        if (exclusion_count < 0) {
@@ -234,15 +234,12 @@ static char *get_exclusion_names_msg(struct lttng_event *event)
         */
        exclusion_msg = malloc(exclusion_count +
                        exclusion_count * LTTNG_SYMBOL_NAME_LEN +
-                       strlen(exclusion_fmt) + 1);
+                       exclusion_fmt_len + 1);
        if (!exclusion_msg) {
                goto end;
        }
 
-       at = exclusion_msg;
-       count = sprintf(at, exclusion_fmt);
-       at += count;
-
+       at = strcpy(exclusion_msg, exclusion_fmt) + exclusion_fmt_len;
        for (i = 0; i < exclusion_count; ++i) {
                const char *name;
 
@@ -261,12 +258,11 @@ static char *get_exclusion_names_msg(struct lttng_event *event)
                }
 
                /* Append exclusion name */
-               count = sprintf(at, "%s", name);
-               at += count;
+               at += sprintf(at, "%s", name);
        }
 
        /* This also puts a final '\0' at the end of exclusion_msg */
-       sprintf(at, "]");
+       strcpy(at, "]");
 
 end:
        return exclusion_msg;
@@ -1086,8 +1082,8 @@ static int list_session_agent_events(void)
                                filter_msg = malloc(strlen(filter_str) +
                                                strlen(filter_fmt) + 1);
                                if (filter_msg) {
-                                       sprintf(filter_msg, " [filter: '%s']",
-                                               filter_str);
+                                       sprintf(filter_msg, filter_fmt,
+                                                       filter_str);
                                }
                        }
 
@@ -1194,6 +1190,23 @@ error:
  */
 static void print_channel(struct lttng_channel *channel)
 {
+       int ret;
+       uint64_t discarded_events, lost_packets;
+
+       ret = lttng_channel_get_discarded_event_count(channel,
+                       &discarded_events);
+       if (ret) {
+               ERR("Failed to retrieve discarded event count of channel");
+               return;
+       }
+
+       ret = lttng_channel_get_lost_packet_count(channel,
+                       &lost_packets);
+       if (ret) {
+               ERR("Failed to retrieve lost packet count of channel");
+               return;
+       }
+
        MSG("- %s:%s\n", channel->name, enabled_string(channel->enabled));
 
        MSG("%sAttributes:", indent4);
@@ -1204,6 +1217,8 @@ static void print_channel(struct lttng_channel *channel)
        MSG("%sread timer interval: %u", indent6, channel->attr.read_timer_interval);
        MSG("%strace file count: %" PRIu64, indent6, channel->attr.tracefile_count);
        MSG("%strace file size (bytes): %" PRIu64, indent6, channel->attr.tracefile_size);
+       MSG("%sdiscarded events: %" PRIu64, indent6, discarded_events);
+       MSG("%slost packets: %" PRIu64, indent6, lost_packets);
        switch (channel->attr.output) {
                case LTTNG_EVENT_SPLICE:
                        MSG("%soutput: splice()", indent6);
This page took 0.024545 seconds and 4 git commands to generate.