Remove runtime dependency on liburcu shared objects
[lttng-ust.git] / include / lttng / ust-tracepoint-event.h
index 00e931a83a26037aa5b24b72c9bd500b127426b3..11025204214eba26a9fc9724cf34b128cbb30fef 100644 (file)
@@ -36,9 +36,9 @@
 
 #undef tp_list_for_each_entry_rcu
 #define tp_list_for_each_entry_rcu(pos, head, member)  \
-       for (pos = cds_list_entry(tp_rcu_dereference_bp((head)->next), __typeof__(*pos), member);       \
+       for (pos = cds_list_entry(tp_rcu_dereference((head)->next), __typeof__(*pos), member);  \
             &pos->member != (head);                                    \
-            pos = cds_list_entry(tp_rcu_dereference_bp(pos->member.next), __typeof__(*pos), member))
+            pos = cds_list_entry(tp_rcu_dereference(pos->member.next), __typeof__(*pos), member))
 
 /*
  * TRACEPOINT_EVENT_CLASS declares a class of tracepoints receiving the
@@ -665,7 +665,7 @@ size_t __event_get_size__##_provider##___##_name(size_t *__dynamic_len, _TP_ARGS
 #undef TRACEPOINT_EVENT_CLASS
 #define TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields)             \
 static inline                                                                \
-void __event_prepare_filter_stack__##_provider##___##_name(char *__stack_data,\
+void __event_prepare_interpreter_stack__##_provider##___##_name(char *__stack_data,\
                                                 _TP_ARGS_DATA_PROTO(_args))  \
 {                                                                            \
        _fields                                                               \
@@ -875,10 +875,10 @@ void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args))         \
                struct lttng_bytecode_runtime *__filter_bc_runtime;                   \
                int __filter_record = __event->has_enablers_without_bytecode; \
                                                                              \
-               __event_prepare_filter_stack__##_provider##___##_name(__stackvar.__filter_stack_data, \
+               __event_prepare_interpreter_stack__##_provider##___##_name(__stackvar.__filter_stack_data, \
                        _TP_ARGS_DATA_VAR(_args));                            \
                tp_list_for_each_entry_rcu(__filter_bc_runtime, &__event->filter_bytecode_runtime_head, node) { \
-                       if (caa_unlikely(__filter_bc_runtime->filter(__filter_bc_runtime,             \
+                       if (caa_unlikely(__filter_bc_runtime->interpreter_funcs.filter(__filter_bc_runtime,     \
                                        __stackvar.__filter_stack_data) & LTTNG_INTERPRETER_RECORD_FLAG)) { \
                                __filter_record = 1;                          \
                                break;                                        \
@@ -892,8 +892,8 @@ void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args))           \
        __event_align = __event_get_align__##_provider##___##_name(_TP_ARGS_VAR(_args)); \
        memset(&__lttng_ctx, 0, sizeof(__lttng_ctx));                         \
        __lttng_ctx.event = __event;                                          \
-       __lttng_ctx.chan_ctx = tp_rcu_dereference_bp(__chan->ctx);            \
-       __lttng_ctx.event_ctx = tp_rcu_dereference_bp(__event->ctx);          \
+       __lttng_ctx.chan_ctx = tp_rcu_dereference(__chan->ctx);               \
+       __lttng_ctx.event_ctx = tp_rcu_dereference(__event->ctx);             \
        lib_ring_buffer_ctx_init(&__ctx, __chan->chan, __event, __event_len,  \
                                 __event_align, -1, __chan->handle, &__lttng_ctx); \
        __ctx.ip = _TP_IP_PARAM(TP_IP_PARAM);                                 \
@@ -947,7 +947,7 @@ void __event_notifier_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args))
        const size_t __num_fields = _TP_ARRAY_SIZE(__event_fields___##_provider##___##_name) - 1;\
        union {                                                               \
                size_t __dynamic_len[__num_fields];                           \
-               char __filter_stack_data[2 * sizeof(unsigned long) * __num_fields]; \
+               char __interpreter_stack_data[2 * sizeof(unsigned long) * __num_fields]; \
        } __stackvar;                                                         \
        if (caa_unlikely(!CMM_ACCESS_ONCE(__event_notifier->enabled)))        \
                return;                                                       \
@@ -957,18 +957,22 @@ void __event_notifier_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args))
                struct lttng_bytecode_runtime *__filter_bc_runtime;                    \
                int __filter_record = __event_notifier->has_enablers_without_bytecode; \
                                                                              \
-               __event_prepare_filter_stack__##_provider##___##_name(__stackvar.__filter_stack_data, \
+               __event_prepare_interpreter_stack__##_provider##___##_name(__stackvar.__interpreter_stack_data, \
                        _TP_ARGS_DATA_VAR(_args));                            \
                tp_list_for_each_entry_rcu(__filter_bc_runtime, &__event_notifier->filter_bytecode_runtime_head, node) { \
-                       if (caa_unlikely(__filter_bc_runtime->filter(__filter_bc_runtime,            \
-                                       __stackvar.__filter_stack_data) & LTTNG_INTERPRETER_RECORD_FLAG)) \
+                       if (caa_unlikely(__filter_bc_runtime->interpreter_funcs.filter(__filter_bc_runtime,       \
+                                       __stackvar.__interpreter_stack_data) & LTTNG_INTERPRETER_RECORD_FLAG)) \
                                __filter_record = 1;                          \
                }                                                             \
                if (caa_likely(!__filter_record))                             \
                        return;                                               \
        }                                                                     \
+       if (caa_unlikely(!cds_list_empty(&__event_notifier->capture_bytecode_runtime_head))) \
+               __event_prepare_interpreter_stack__##_provider##___##_name(__stackvar.__interpreter_stack_data, \
+                       _TP_ARGS_DATA_VAR(_args));                            \
                                                                              \
-       lttng_event_notifier_notification_send(__event_notifier);             \
+       lttng_event_notifier_notification_send(__event_notifier,              \
+                       __stackvar.__interpreter_stack_data);                 \
 }
 
 #include TRACEPOINT_INCLUDE
This page took 0.02648 seconds and 4 git commands to generate.