X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Fust-events.h;h=1e2b349f1aa29ca9f389f7afac48f9382b013d2f;hb=da6eed2597e16cf3291e1c0f0f9dcc2323d298cf;hp=da7a2299f055ec45ae7cd88c909b581536c65f15;hpb=5a821cd6258af4b44aac352bd89b715377cee7d2;p=lttng-ust.git diff --git a/include/lttng/ust-events.h b/include/lttng/ust-events.h index da7a2299..1e2b349f 100644 --- a/include/lttng/ust-events.h +++ b/include/lttng/ust-events.h @@ -212,7 +212,7 @@ struct lttng_ctx { #define LTTNG_UST_EVENT_DESC_PADDING 40 struct lttng_event_desc { const char *name; - void *probe_callback; + void (*probe_callback)(void); const struct lttng_event_ctx *ctx; /* context */ const struct lttng_event_field *fields; /* event payload */ unsigned int nr_fields; @@ -245,6 +245,7 @@ struct session_wildcard { struct cds_list_head list; /* per-session list of wildcards */ struct cds_list_head session_list; /* node of session wildcard list */ struct wildcard_entry *entry; + struct lttng_ust_filter_bytecode *filter_bytecode; unsigned int enabled:1; }; @@ -257,6 +258,7 @@ struct wildcard_entry { /* head of session list to which this wildcard apply */ struct cds_list_head session_list; enum lttng_ust_loglevel_type loglevel_type; + struct lttng_ust_filter_bytecode *filter_bytecode; int loglevel; char name[0]; }; @@ -282,6 +284,8 @@ struct lttng_ust_field_list { }; struct ust_pending_probe; +struct ltt_event; +struct lttng_ust_filter_bytecode; /* * ltt_event structure is referred to by the tracing fast path. It must be @@ -292,7 +296,8 @@ struct ltt_event { struct ltt_channel *chan; int enabled; const struct lttng_event_desc *desc; - void *filter; + int (*filter)(void *filter_data, const char *filter_stack_data); + void *filter_data; struct lttng_ctx *ctx; enum lttng_ust_instrumentation instrumentation; union { @@ -300,6 +305,7 @@ struct ltt_event { struct cds_list_head list; /* Event list */ struct cds_list_head wildcard_list; /* Event list for wildcard */ struct ust_pending_probe *pending_probe; + struct lttng_ust_filter_bytecode *filter_bytecode; unsigned int metadata_dumped:1; }; @@ -412,7 +418,6 @@ struct ltt_channel *ltt_global_channel_create(struct ltt_session *session, int ltt_event_create(struct ltt_channel *chan, struct lttng_ust_event *event_param, - void *filter, struct ltt_event **event); int ltt_channel_enable(struct ltt_channel *channel); @@ -469,5 +474,12 @@ int ltt_loglevel_match(const struct lttng_event_desc *desc, int req_loglevel); void ltt_probes_create_wildcard_events(struct wildcard_entry *entry, struct session_wildcard *wildcard); +int lttng_filter_event_attach_bytecode(struct ltt_event *event, + struct lttng_ust_filter_bytecode *filter); +int lttng_filter_wildcard_attach_bytecode(struct session_wildcard *wildcard, + struct lttng_ust_filter_bytecode *filter); +void lttng_filter_event_link_bytecode(struct ltt_event *event, + struct lttng_ust_filter_bytecode *filter_bytecode); +void lttng_filter_wildcard_link_bytecode(struct session_wildcard *wildcard); #endif /* _LTTNG_UST_EVENTS_H */