X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Fevents-internal.h;h=38ae3a7b702450833c583b9b2fdd2c9a9edbb983;hb=b8b4704b8508da42ffcef26770b44642005695e6;hp=30cf4adc8bab62723421c77cdb2c0c872c8de2ec;hpb=a67ba386d82d85c6b6ca56c249a13ab5a1f34b08;p=lttng-modules.git diff --git a/include/lttng/events-internal.h b/include/lttng/events-internal.h index 30cf4adc..38ae3a7b 100644 --- a/include/lttng/events-internal.h +++ b/include/lttng/events-internal.h @@ -20,7 +20,7 @@ struct lttng_kernel_event_common_private { uint64_t user_token; int has_enablers_without_filter_bytecode; - /* list of struct lttng_kernel_bytecode_runtime, sorted by seqnum */ + /* list of struct lttng_bytecode_runtime, sorted by seqnum */ struct list_head filter_bytecode_runtime_head; enum lttng_kernel_abi_instrumentation instrumentation; /* Selected by instrumentation */ @@ -64,6 +64,53 @@ struct lttng_kernel_event_notifier_private { }; +enum lttng_kernel_bytecode_interpreter_ret { + LTTNG_KERNEL_BYTECODE_INTERPRETER_ERROR = -1, + LTTNG_KERNEL_BYTECODE_INTERPRETER_OK = 0, +}; + +enum lttng_kernel_bytecode_filter_result { + LTTNG_KERNEL_BYTECODE_FILTER_ACCEPT = 0, + LTTNG_KERNEL_BYTECODE_FILTER_REJECT = 1, +}; + +struct lttng_kernel_bytecode_filter_ctx { + enum lttng_kernel_bytecode_filter_result result; +}; + +/* + * Enabler field, within whatever object is enabling an event. Target of + * backward reference. + */ +struct lttng_enabler { + enum lttng_enabler_format_type format_type; + + /* head list of struct lttng_bytecode_node */ + struct list_head filter_bytecode_head; + + struct lttng_kernel_abi_event event_param; + unsigned int enabled:1; + + uint64_t user_token; /* User-provided token. */ +}; + +struct lttng_event_enabler { + struct lttng_enabler base; + struct list_head node; /* per-session list of enablers */ + struct lttng_channel *chan; +}; + +struct lttng_event_notifier_enabler { + struct lttng_enabler base; + uint64_t error_counter_index; + struct list_head node; /* List of event_notifier enablers */ + struct lttng_event_notifier_group *group; + + /* head list of struct lttng_bytecode_node */ + struct list_head capture_bytecode_head; + uint64_t num_captures; +}; + static inline const struct lttng_kernel_type_integer *lttng_kernel_get_type_integer(const struct lttng_kernel_type_common *type) { @@ -138,4 +185,23 @@ static inline bool lttng_kernel_type_is_bytewise_integer(const struct lttng_kern return true; } +int lttng_kernel_interpret_event_filter(const struct lttng_kernel_event_common *event, + const char *interpreter_stack_data, + struct lttng_probe_ctx *probe_ctx, + void *event_filter_ctx); + +static inline +struct lttng_enabler *lttng_event_enabler_as_enabler( + struct lttng_event_enabler *event_enabler) +{ + return &event_enabler->base; +} + +static inline +struct lttng_enabler *lttng_event_notifier_enabler_as_enabler( + struct lttng_event_notifier_enabler *event_notifier_enabler) +{ + return &event_notifier_enabler->base; +} + #endif /* _LTTNG_EVENTS_INTERNAL_H */