#include <common/config/session-config.h>
#include <common/defaults.h>
#include <lttng/snapshot-internal.h>
+#include <lttng/channel.h>
#include "mi-lttng.h"
#include <assert.h>
const char * const mi_lttng_element_command_enable_event = "enable-event";
const char * const mi_lttng_element_command_list = "list";
const char * const mi_lttng_element_command_load = "load";
+const char * const mi_lttng_element_command_metadata = "metadata";
+const char * const mi_lttng_element_command_metadata_action = "metadata_action";
const char * const mi_lttng_element_command_name = "name";
const char * const mi_lttng_element_command_output = "output";
const char * const mi_lttng_element_command_save = "save";
struct lttng_channel_attr *attr)
{
int ret = 0;
+ struct lttng_channel *chan = caa_container_of(attr,
+ struct lttng_channel, attr);
+ uint64_t discarded_events, lost_packets;
assert(attr);
+ ret = lttng_channel_get_discarded_event_count(chan, &discarded_events);
+ if (ret) {
+ goto end;
+ }
+
+ ret = lttng_channel_get_lost_packet_count(chan, &lost_packets);
+ if (ret) {
+ goto end;
+ }
+
/* Opening Attributes */
ret = mi_lttng_writer_open_element(writer, config_element_attributes);
if (ret) {
goto end;
}
+ /* Discarded events */
+ ret = mi_lttng_writer_write_element_unsigned_int(writer,
+ config_element_discarded_events,
+ discarded_events);
+ if (ret) {
+ goto end;
+ }
+
+ /* Lost packets */
+ ret = mi_lttng_writer_write_element_unsigned_int(writer,
+ config_element_lost_packets,
+ lost_packets);
+ if (ret) {
+ goto end;
+ }
+
/* Closing attributes */
ret = mi_lttng_writer_close_element(writer);
if (ret) {
}
/* Event filter expression */
- ret = lttng_event_get_filter_string(event, &filter_expression);
+ ret = lttng_event_get_filter_expression(event, &filter_expression);
if (ret) {
goto end;
}
return ret;
}
+static int write_event_exclusions(struct mi_writer *writer,
+ struct lttng_event *event)
+{
+ int i;
+ int ret;
+ int exclusion_count;
+
+ /* Open event exclusions */
+ ret = mi_lttng_writer_open_element(writer, config_element_exclusions);
+ if (ret) {
+ goto end;
+ }
+
+ exclusion_count = lttng_event_get_exclusion_name_count(event);
+ if (exclusion_count < 0) {
+ ret = exclusion_count;
+ goto end;
+ }
+
+ for (i = 0; i < exclusion_count; i++) {
+ const char *name;
+
+ ret = lttng_event_get_exclusion_name(event, i, &name);
+ if (ret) {
+ /* Close exclusions */
+ mi_lttng_writer_close_element(writer);
+ goto end;
+ }
+
+ ret = mi_lttng_writer_write_element_string(writer,
+ config_element_exclusion, name);
+ if (ret) {
+ /* Close exclusions */
+ mi_lttng_writer_close_element(writer);
+ goto end;
+ }
+ }
+
+ /* Close exclusions */
+ ret = mi_lttng_writer_close_element(writer);
+
+end:
+ return ret;
+}
+
LTTNG_HIDDEN
int mi_lttng_event_tracepoint_loglevel(struct mi_writer *writer,
struct lttng_event *event, enum lttng_domain_type domain)
goto end;
}
- /* event exclusion filter */
- ret = mi_lttng_writer_write_element_bool(writer,
- config_element_exclusion, event->exclusion);
- if (ret) {
- goto end;
- }
+ /* Event exclusions */
+ ret = write_event_exclusions(writer, event);
end:
return ret;
struct lttng_event *event)
{
/* event exclusion filter */
- return mi_lttng_writer_write_element_bool(writer,
- config_element_exclusion, event->exclusion);
+ return write_event_exclusions(writer, event);
}
LTTNG_HIDDEN