X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Fevents-internal.h;h=a583a2d3c6b0ff50cfa62341120a7f24cf20b5cf;hb=c2fb9c1c4f890840c02ad4b66a7cf69ae5dca6f7;hp=0c7628483271c06c0b012444371bbaced4e100a8;hpb=437d5aa59380583ce1cd14d394a53b398be1275d;p=lttng-modules.git diff --git a/include/lttng/events-internal.h b/include/lttng/events-internal.h index 0c762848..a583a2d3 100644 --- a/include/lttng/events-internal.h +++ b/include/lttng/events-internal.h @@ -10,6 +10,74 @@ #include +struct lttng_kernel_event_common_private { + struct lttng_kernel_event_common *pub; /* Public event interface */ + + const struct lttng_kernel_event_desc *desc; + /* Backward references: list of lttng_enabler_ref (ref to enablers) */ + struct list_head enablers_ref_head; + int registered; /* has reg'd tracepoint probe */ + uint64_t user_token; + + int has_enablers_without_filter_bytecode; + /* 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 */ + union { + struct lttng_kprobe kprobe; + struct lttng_uprobe uprobe; + struct { + struct lttng_krp *lttng_krp; + char *symbol_name; + } kretprobe; + struct { + enum lttng_syscall_entryexit entryexit; + enum lttng_syscall_abi abi; + struct hlist_node node; /* chain registered syscall event_notifier */ + unsigned int syscall_id; + } syscall; + } u; +}; + +struct lttng_kernel_event_recorder_private { + struct lttng_kernel_event_common_private parent; + + struct lttng_kernel_event_recorder *pub; /* Public event interface */ + struct list_head node; /* Event recorder list */ + struct hlist_node hlist; /* Hash table of event recorders */ + struct lttng_kernel_ctx *ctx; + unsigned int id; + unsigned int metadata_dumped:1; +}; + +struct lttng_kernel_event_notifier_private { + struct lttng_kernel_event_common_private parent; + + struct lttng_kernel_event_notifier *pub; /* Public event notifier interface */ + struct lttng_event_notifier_group *group; /* weak ref */ + size_t num_captures; /* Needed to allocate the msgpack array. */ + uint64_t error_counter_index; + struct list_head node; /* Event notifier list */ + struct hlist_node hlist; /* Hash table of event notifiers */ + struct list_head capture_bytecode_runtime_head; + +}; + +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; +}; + static inline const struct lttng_kernel_type_integer *lttng_kernel_get_type_integer(const struct lttng_kernel_type_common *type) { @@ -84,4 +152,9 @@ 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); + #endif /* _LTTNG_EVENTS_INTERNAL_H */