X-Git-Url: http://git.liburcu.org/?p=lttng-modules.git;a=blobdiff_plain;f=probes%2Flttng-tracepoint-event-impl.h;h=5dee7fbe3036974338ce1abc25fd6df748f7e7cc;hp=39454fb3d9c13d68fc4648aa135a1aacd224bb80;hb=2459130397d7e7eecc44a5f06a39d65c78257eef;hpb=d1f652f8d4f6d1de8f6d32ae8711d6469c38892c diff --git a/probes/lttng-tracepoint-event-impl.h b/probes/lttng-tracepoint-event-impl.h index 39454fb3..5dee7fbe 100644 --- a/probes/lttng-tracepoint-event-impl.h +++ b/probes/lttng-tracepoint-event-impl.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (GPL-2.0 or LGPL-2.1) +/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) * * lttng-tracepoint-event-impl.h * @@ -11,15 +11,15 @@ #include #include #include -#include #include #include #include -#include /* for wrapper_vmalloc_sync_all() */ -#include -#include +#include /* for wrapper_vmalloc_sync_mappings() */ +#include +#include #include +#include #include #include #include @@ -257,29 +257,34 @@ void __event_template_proto___##_name(void); #define _ctf_integer_ext(_type, _item, _src, _byte_order, _base, _user, _nowrite) \ { \ .name = #_item, \ - .type = __type_integer(_type, 0, 0, -1, _byte_order, _base, none),\ + .type = __type_integer(_type, 0, 0, -1, _byte_order, _base, none), \ .nowrite = _nowrite, \ .user = _user, \ + .nofilter = 0, \ }, #undef _ctf_array_encoded -#define _ctf_array_encoded(_type, _item, _src, _length, _encoding, _byte_order, _base, _user, _nowrite) \ +#define _ctf_array_encoded(_type, _item, _src, _length, \ + _encoding, _byte_order, _elem_type_base, _user, _nowrite) \ { \ .name = #_item, \ .type = \ { \ - .atype = atype_array, \ + .atype = atype_array_nestable, \ .u = \ { \ - .array = \ + .array_nestable = \ { \ - .elem_type = __type_integer(_type, 0, 0, 0, _byte_order, _base, _encoding), \ + .elem_type = __LTTNG_COMPOUND_LITERAL(struct lttng_type, \ + __type_integer(_type, 0, 0, -1, _byte_order, _elem_type_base, _encoding)), \ .length = _length, \ + .alignment = 0, \ } \ } \ }, \ .nowrite = _nowrite, \ .user = _user, \ + .nofilter = 0, \ }, #undef _ctf_array_bitfield @@ -288,65 +293,84 @@ void __event_template_proto___##_name(void); .name = #_item, \ .type = \ { \ - .atype = atype_array_bitfield, \ + .atype = atype_array_nestable, \ .u = \ { \ - .array = \ + .array_nestable = \ { \ - .elem_type = __type_integer(_type, 1, 1, 0, __LITTLE_ENDIAN, 10, none), \ + .elem_type = __LTTNG_COMPOUND_LITERAL(struct lttng_type, \ + __type_integer(_type, 1, 1, 0, __LITTLE_ENDIAN, 10, none)), \ .length = (_length) * sizeof(_type) * CHAR_BIT, \ - .elem_alignment = lttng_alignof(_type), \ + .alignment = lttng_alignof(_type), \ } \ } \ }, \ .nowrite = _nowrite, \ .user = _user, \ + .nofilter = 0, \ }, #undef _ctf_sequence_encoded #define _ctf_sequence_encoded(_type, _item, _src, \ _length_type, _src_length, _encoding, \ - _byte_order, _base, _user, _nowrite) \ + _byte_order, _elem_type_base, _user, _nowrite) \ + { \ + .name = "_" #_item "_length", \ + .type = __type_integer(_length_type, 0, 0, -1, __BYTE_ORDER, 10, none), \ + .nowrite = _nowrite, \ + .nofilter = 1, \ + }, \ { \ .name = #_item, \ .type = \ { \ - .atype = atype_sequence, \ + .atype = atype_sequence_nestable, \ .u = \ { \ - .sequence = \ + .sequence_nestable = \ { \ - .length_type = __type_integer(_length_type, 0, 0, 0, __BYTE_ORDER, 10, none), \ - .elem_type = __type_integer(_type, 0, 0, -1, _byte_order, _base, _encoding), \ + .length_name = "_" #_item "_length", \ + .elem_type = __LTTNG_COMPOUND_LITERAL(struct lttng_type, \ + __type_integer(_type, 0, 0, -1, _byte_order, _elem_type_base, _encoding)), \ + .alignment = 0, \ }, \ }, \ }, \ .nowrite = _nowrite, \ .user = _user, \ + .nofilter = 0, \ }, #undef _ctf_sequence_bitfield #define _ctf_sequence_bitfield(_type, _item, _src, \ _length_type, _src_length, \ _user, _nowrite) \ + { \ + .name = "_" #_item "_length", \ + .type = __type_integer(_length_type, 0, 0, -1, __BYTE_ORDER, 10, none), \ + .nowrite = _nowrite, \ + .nofilter = 1, \ + }, \ { \ .name = #_item, \ .type = \ { \ - .atype = atype_sequence_bitfield, \ + .atype = atype_sequence_nestable, \ .u = \ { \ - .sequence = \ + .sequence_nestable = \ { \ - .length_type = __type_integer(_length_type, 0, 0, 0, __BYTE_ORDER, 10, none), \ - .elem_type = __type_integer(_type, 1, 1, 0, __LITTLE_ENDIAN, 10, none), \ - .elem_alignment = lttng_alignof(_type), \ + .length_name = "_" #_item "_length", \ + .elem_type = __LTTNG_COMPOUND_LITERAL(struct lttng_type, \ + __type_integer(_type, 1, 1, 0, __LITTLE_ENDIAN, 10, none)), \ + .alignment = lttng_alignof(_type), \ }, \ }, \ }, \ .nowrite = _nowrite, \ .user = _user, \ + .nofilter = 0, \ }, #undef _ctf_string @@ -358,11 +382,12 @@ void __event_template_proto___##_name(void); .atype = atype_string, \ .u = \ { \ - .basic = { .string = { .encoding = lttng_encode_UTF8 } } \ + .string = { .encoding = lttng_encode_UTF8 }, \ }, \ }, \ .nowrite = _nowrite, \ .user = _user, \ + .nofilter = 0, \ }, #undef _ctf_enum @@ -370,34 +395,28 @@ void __event_template_proto___##_name(void); { \ .name = #_item, \ .type = { \ - .atype = atype_enum, \ + .atype = atype_enum_nestable, \ .u = { \ - .basic = { \ - .enumeration = { \ - .desc = &__enum_##_name, \ - .container_type = { \ - .size = sizeof(_type) * CHAR_BIT, \ - .alignment = lttng_alignof(_type) * CHAR_BIT, \ - .signedness = lttng_is_signed_type(_type), \ - .reverse_byte_order = 0, \ - .base = 10, \ - .encoding = lttng_encode_none, \ - }, \ - }, \ - }, \ + .enum_nestable = { \ + .desc = &__enum_##_name, \ + .container_type = __LTTNG_COMPOUND_LITERAL(struct lttng_type, \ + __type_integer(_type, 0, 0, -1, __BYTE_ORDER, 10, none)), \ + }, \ }, \ }, \ .nowrite = _nowrite, \ .user = _user, \ + .nofilter = 0, \ }, #undef ctf_custom_field #define ctf_custom_field(_type, _item, _code) \ { \ .name = #_item, \ - .type = { _type }, \ + .type = _type, \ .nowrite = 0, \ .user = 0, \ + .nofilter = 1, \ }, #undef ctf_custom_type @@ -1146,19 +1165,19 @@ static void __event_probe__##_name(void *__data, _proto) \ return; \ __lf = lttng_rcu_dereference(__session->uid_tracker.p); \ if (__lf && likely(!lttng_id_tracker_lookup(__lf, \ - from_kuid(&init_user_ns, current_uid())))) \ + lttng_current_uid()))) \ return; \ __lf = lttng_rcu_dereference(__session->vuid_tracker.p); \ if (__lf && likely(!lttng_id_tracker_lookup(__lf, \ - from_kuid(current_user_ns(), current_uid())))) \ + lttng_current_vuid()))) \ return; \ __lf = lttng_rcu_dereference(__session->gid_tracker.p); \ if (__lf && likely(!lttng_id_tracker_lookup(__lf, \ - from_kgid(&init_user_ns, current_gid())))) \ + lttng_current_gid()))) \ return; \ __lf = lttng_rcu_dereference(__session->vgid_tracker.p); \ if (__lf && likely(!lttng_id_tracker_lookup(__lf, \ - from_kgid(current_user_ns(), current_gid())))) \ + lttng_current_vgid()))) \ return; \ __orig_dynamic_len_offset = this_cpu_ptr(<tng_dynamic_len_stack)->offset; \ __dynamic_len_idx = __orig_dynamic_len_offset; \ @@ -1171,8 +1190,10 @@ static void __event_probe__##_name(void *__data, _proto) \ tp_locvar, _args); \ lttng_list_for_each_entry_rcu(bc_runtime, &__event->bytecode_runtime_head, node) { \ if (unlikely(bc_runtime->filter(bc_runtime, &__lttng_probe_ctx, \ - __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) \ + __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) { \ __filter_record = 1; \ + break; \ + } \ } \ if (likely(!__filter_record)) \ goto __post; \ @@ -1239,19 +1260,19 @@ static void __event_probe__##_name(void *__data) \ return; \ __lf = lttng_rcu_dereference(__session->uid_tracker.p); \ if (__lf && likely(!lttng_id_tracker_lookup(__lf, \ - from_kuid(&init_user_ns, current_uid())))) \ + lttng_current_uid()))) \ return; \ __lf = lttng_rcu_dereference(__session->vuid_tracker.p); \ if (__lf && likely(!lttng_id_tracker_lookup(__lf, \ - from_kuid(current_user_ns(), current_uid())))) \ + lttng_current_vuid()))) \ return; \ __lf = lttng_rcu_dereference(__session->gid_tracker.p); \ if (__lf && likely(!lttng_id_tracker_lookup(__lf, \ - from_kgid(&init_user_ns, current_gid())))) \ + lttng_current_gid()))) \ return; \ __lf = lttng_rcu_dereference(__session->vgid_tracker.p); \ if (__lf && likely(!lttng_id_tracker_lookup(__lf, \ - from_kgid(current_user_ns(), current_gid())))) \ + lttng_current_vgid()))) \ return; \ __orig_dynamic_len_offset = this_cpu_ptr(<tng_dynamic_len_stack)->offset; \ __dynamic_len_idx = __orig_dynamic_len_offset; \ @@ -1264,8 +1285,10 @@ static void __event_probe__##_name(void *__data) \ tp_locvar); \ lttng_list_for_each_entry_rcu(bc_runtime, &__event->bytecode_runtime_head, node) { \ if (unlikely(bc_runtime->filter(bc_runtime, &__lttng_probe_ctx, \ - __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) \ + __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) { \ __filter_record = 1; \ + break; \ + } \ } \ if (likely(!__filter_record)) \ goto __post; \ @@ -1391,7 +1414,7 @@ static __used struct lttng_probe_desc TP_ID(__probe_desc___, TRACE_SYSTEM) = { #ifndef TP_MODULE_NOINIT static int TP_ID(__lttng_events_init__, TRACE_SYSTEM)(void) { - wrapper_vmalloc_sync_all(); + wrapper_vmalloc_sync_mappings(); return lttng_probe_register(&TP_ID(__probe_desc___, TRACE_SYSTEM)); }