- /* Event filter enabled? */
- ret = mi_lttng_writer_write_element_bool(writer,
- config_element_filter, event->filter);
+ /* Event filter expression */
+ ret = lttng_event_get_filter_expression(event, &filter_expression);
+ if (ret) {
+ goto end;
+ }
+
+ if (filter_expression) {
+ ret = mi_lttng_writer_write_element_string(writer,
+ config_element_filter_expression,
+ filter_expression);
+ if (ret) {
+ goto end;
+ }
+ }
+
+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);