- int registered; /* has reg'd tracepoint probe */
- const struct lttng_kernel_event_desc *desc;
- void *filter;
- struct list_head list; /* event_notifier list in event_notifier group */
-
- enum lttng_kernel_instrumentation instrumentation;
- union {
- struct lttng_kprobe kprobe;
- struct lttng_uprobe uprobe;
- 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;
-
- /* Backward references: list of lttng_enabler_ref (ref to enablers) */
- struct list_head enablers_ref_head;
- struct hlist_node hlist; /* session ht of event_notifiers */
- /* list of struct lttng_bytecode_runtime, sorted by seqnum */
- struct list_head filter_bytecode_runtime_head;
- size_t num_captures;
- struct list_head capture_bytecode_runtime_head;
- int has_enablers_without_bytecode;
- int eval_capture; /* Should evaluate capture */
-
- void (*send_notification)(struct lttng_event_notifier *event_notifier,
- struct lttng_probe_ctx *lttng_probe_ctx,
- const char *interpreter_stack_data,
- struct lttng_kernel_notifier_ctx *notif_ctx);
- struct lttng_event_notifier_group *group; /* Weak ref */
+ int eval_filter; /* Need to evaluate filters */
+ int (*run_filter)(const struct lttng_kernel_event_common *event,
+ const char *stack_data,
+ struct lttng_probe_ctx *probe_ctx,
+ void *filter_ctx);
+};
+
+struct lttng_kernel_event_recorder_private;
+
+struct lttng_kernel_event_recorder {
+ struct lttng_kernel_event_common parent;
+ struct lttng_kernel_event_recorder_private *priv; /* Private event record interface */
+
+ struct lttng_channel *chan;
+};
+
+struct lttng_kernel_notification_ctx {
+ int eval_capture; /* Capture evaluation available. */
+};
+
+struct lttng_kernel_event_notifier_private;
+
+struct lttng_kernel_event_notifier {
+ struct lttng_kernel_event_common parent;
+ struct lttng_kernel_event_notifier_private *priv; /* Private event notifier interface */
+
+ int eval_capture; /* Need to evaluate capture */
+ void (*notification_send)(struct lttng_kernel_event_notifier *event_notifier,
+ const char *stack_data,
+ struct lttng_probe_ctx *probe_ctx,
+ struct lttng_kernel_notification_ctx *notif_ctx);