Record event as soon as one filters evaluates to TRUE
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Fri, 20 Mar 2020 14:52:21 +0000 (10:52 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 20 Mar 2020 20:18:20 +0000 (16:18 -0400)
This is a tiny optimization but it can reduce tracing cost in cases
where multiple filters are attached to a probe.

Since we want to trace the event if any of its filter expressions
evaluates to TRUE, there is no need to keep on evaluating expression
once one is found to be TRUE.

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I2bb8fafb3052fce02b10f541e025a9a74ffa1895

include/lttng/ust-tracepoint-event.h

index 336125a6c4821507369ae932fd75d14484521bb4..380593b04d3fa8c1f6ade28056bbdb17fb8fedd6 100644 (file)
@@ -808,8 +808,10 @@ void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args))          \
                        _TP_ARGS_DATA_VAR(_args));                            \
                tp_list_for_each_entry_rcu(bc_runtime, &__event->bytecode_runtime_head, node) { \
                        if (caa_unlikely(bc_runtime->filter(bc_runtime,       \
-                                       __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) \
+                                       __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) \
                                __filter_record = 1;                          \
+                               break;                                        \
+                       }                                                     \
                }                                                             \
                if (caa_likely(!__filter_record))                             \
                        return;                                               \
This page took 0.025794 seconds and 4 git commands to generate.