+struct lttng_event;
+
+struct lttng_ust_filter_bytecode_node {
+ struct cds_list_head node;
+ struct lttng_enabler *enabler;
+ /*
+ * struct lttng_ust_filter_bytecode has var. sized array, must
+ * be last field.
+ */
+ struct lttng_ust_filter_bytecode bc;
+};
+
+struct lttng_ust_excluder_node {
+ struct cds_list_head node;
+ struct lttng_enabler *enabler;
+ /*
+ * struct lttng_ust_event_exclusion had variable sized array,
+ * must be last field.
+ */
+ struct lttng_ust_event_exclusion excluder;
+};
+/*
+ * Filter return value masks.
+ */
+enum lttng_filter_ret {
+ LTTNG_FILTER_DISCARD = 0,
+ LTTNG_FILTER_RECORD_FLAG = (1ULL << 0),
+ /* Other bits are kept for future use. */
+};
+
+struct lttng_bytecode_runtime {
+ /* Associated bytecode */
+ struct lttng_ust_filter_bytecode_node *bc;
+ uint64_t (*filter)(void *filter_data, const char *filter_stack_data);
+ int link_failed;
+ struct cds_list_head node; /* list of bytecode runtime in event */
+ struct lttng_session *session;
+};
+
+/*
+ * Objects in a linked-list of enablers, owned by an event.
+ */
+struct lttng_enabler_ref {
+ struct cds_list_head node; /* enabler ref list */
+ struct lttng_enabler *ref; /* backward ref */
+};