#include <lttng/domain.h>
#include <lttng/event.h>
+#include <stdint.h>
#ifdef __cplusplus
extern "C" {
extern void lttng_channel_set_default_attr(struct lttng_domain *domain,
struct lttng_channel_attr *attr);
+/*
+ * Get the discarded event count of a specific LTTng channel.
+ *
+ * Returns 0 on success, or a negative LTTng error code on error.
+ */
+extern int lttng_channel_get_discarded_event_count(struct lttng_channel *chan,
+ uint64_t *discarded_events);
+
+/*
+ * Get the lost packet count of a specific LTTng channel.
+ *
+ * Returns 0 on success, or a negative LTTng error code on error.
+ */
+extern int lttng_channel_get_lost_packet_count(struct lttng_channel *chan,
+ uint64_t *lost_packets);
+
#ifdef __cplusplus
}
#endif
uint32_t nb_exclusions;
} LTTNG_PACKED;
+/*
+ * Channel extended info.
+ */
+struct lttcomm_channel_extended {
+ uint64_t discarded_events;
+ uint64_t lost_packets;
+} LTTNG_PACKED;
+
/*
* Data structure for the response from sessiond to the lttng client.
*/
}
}
+int lttng_channel_get_discarded_event_count(struct lttng_channel *channel,
+ uint64_t *discarded_events)
+{
+ int ret = 0;
+ struct lttcomm_channel_extended *chan_ext;
+
+ if (!channel || !discarded_events) {
+ ret = -LTTNG_ERR_INVALID;
+ goto end;
+ }
+
+ chan_ext = channel->attr.extended.ptr;
+ if (!chan_ext) {
+ /*
+ * This can happen since the lttng_channel structure is
+ * used for other tasks where this pointer is never set.
+ */
+ *discarded_events = 0;
+ goto end;
+ }
+
+ *discarded_events = chan_ext->discarded_events;
+end:
+ return ret;
+}
+
+int lttng_channel_get_lost_packet_count(struct lttng_channel *channel,
+ uint64_t *lost_packets)
+{
+ int ret = 0;
+ struct lttcomm_channel_extended *chan_ext;
+
+ if (!channel || !lost_packets) {
+ ret = -LTTNG_ERR_INVALID;
+ goto end;
+ }
+
+ chan_ext = channel->attr.extended.ptr;
+ if (!chan_ext) {
+ /*
+ * This can happen since the lttng_channel structure is
+ * used for other tasks where this pointer is never set.
+ */
+ *lost_packets = 0;
+ goto end;
+ }
+
+ *lost_packets = chan_ext->lost_packets;
+end:
+ return ret;
+}
+
/*
* Check if session daemon is alive.
*