tracepoint: Refactor representation of nested types
[lttng-ust.git] / include / lttng / ust-tracepoint-event.h
index 336125a6c4821507369ae932fd75d14484521bb4..27f1686a16dfba532c69572b3f19caba65c7d4de 100644 (file)
@@ -237,6 +237,11 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)
          .name = #_item,                                       \
          .type = __type_integer(_type, _byte_order, _base, none),\
          .nowrite = _nowrite,                                  \
+         .u = {                                                \
+                 .ext = {                                      \
+                         .nofilter = 0,                        \
+                 },                                            \
+         },                                                    \
        },
 
 #undef _ctf_float
@@ -245,6 +250,11 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)
          .name = #_item,                                       \
          .type = __type_float(_type),                          \
          .nowrite = _nowrite,                                  \
+         .u = {                                                \
+                 .ext = {                                      \
+                         .nofilter = 0,                        \
+                 },                                            \
+         },                                                    \
        },
 
 #undef _ctf_array_encoded
@@ -255,38 +265,62 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)
          .name = #_item,                                       \
          .type =                                               \
                {                                               \
-                 .atype = atype_array,                         \
+                 .atype = atype_array_nestable,                \
                  .u =                                          \
                        {                                       \
-                         .array =                              \
+                         .array_nestable =                     \
                                {                               \
-                                 .elem_type = __type_integer(_type, _byte_order, _elem_type_base, _encoding), \
+                                 .elem_type = __LTTNG_COMPOUND_LITERAL(struct lttng_type, \
+                                       __type_integer(_type, _byte_order, _elem_type_base, _encoding)), \
                                  .length = _length,            \
+                                 .alignment = 0,               \
                                }                               \
                        }                                       \
                },                                              \
          .nowrite = _nowrite,                                  \
+         .u = {                                                \
+                 .ext = {                                      \
+                         .nofilter = 0,                        \
+                 },                                            \
+         },                                                    \
        },
 
 #undef _ctf_sequence_encoded
 #define _ctf_sequence_encoded(_type, _item, _src, _byte_order, \
                        _length_type, _src_length, _encoding, _nowrite, \
                        _elem_type_base)                        \
+       {                                                       \
+         .name = "_" #_item "_length",                         \
+         .type = __type_integer(_length_type, BYTE_ORDER, 10, none), \
+         .nowrite = _nowrite,                                  \
+         .u = {                                                \
+                 .ext = {                                      \
+                         .nofilter = 1,                        \
+                 },                                            \
+         },                                                    \
+       },                                                      \
        {                                                       \
          .name = #_item,                                       \
          .type =                                               \
                {                                               \
-                 .atype = atype_sequence,                      \
+                 .atype = atype_sequence_nestable,             \
                  .u =                                          \
                        {                                       \
-                         .sequence =                           \
+                         .sequence_nestable =                  \
                                {                               \
-                                 .length_type = __type_integer(_length_type, BYTE_ORDER, 10, none), \
-                                 .elem_type = __type_integer(_type, _byte_order, _elem_type_base, _encoding), \
+                                 .length_name = "_" #_item "_length", \
+                                 .elem_type = __LTTNG_COMPOUND_LITERAL(struct lttng_type, \
+                                       __type_integer(_type, _byte_order, _elem_type_base, _encoding)), \
+                                 .alignment = 0,               \
                                },                              \
                        },                                      \
                },                                              \
          .nowrite = _nowrite,                                  \
+         .u = {                                                \
+                 .ext = {                                      \
+                         .nofilter = 0,                        \
+                 },                                            \
+         },                                                    \
        },
 
 #undef _ctf_string
@@ -298,10 +332,15 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)
                  .atype = atype_string,                        \
                  .u =                                          \
                        {                                       \
-                         .basic = { .string = { .encoding = lttng_encode_UTF8 } } \
+                         .string = { .encoding = lttng_encode_UTF8 } \
                        },                                      \
                },                                              \
          .nowrite = _nowrite,                                  \
+         .u = {                                                \
+                 .ext = {                                      \
+                         .nofilter = 0,                        \
+                 },                                            \
+         },                                                    \
        },
 
 #undef _ctf_enum
@@ -309,24 +348,21 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)
        {                                                       \
                .name = #_item,                                 \
                .type = {                                       \
-                       .atype = atype_enum,                    \
+                       .atype = atype_enum_nestable,           \
                        .u = {                                  \
-                               .basic = {                      \
-                                       .enumeration = {        \
-                                               .desc = &__enum_##_provider##_##_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_##_provider##_##_name, \
+                                       .container_type = __LTTNG_COMPOUND_LITERAL(struct lttng_type, \
+                                                               __type_integer(_type, BYTE_ORDER, 10, none)), \
+                               },                              \
                        },                                      \
                },                                              \
                .nowrite = _nowrite,                            \
+               .u = {                                          \
+                       .ext = {                                \
+                               .nofilter = 0,                  \
+                       },                                      \
+               },                                              \
        },
 
 #undef TP_FIELDS
@@ -691,15 +727,6 @@ size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args))      \
        __chan->ops->event_write(&__ctx, _src,                          \
                sizeof(_type) * __get_dynamic_len(dest));
 
-/*
- * __chan->ops->u.has_strcpy is a flag letting us know if the LTTng-UST
- * tracepoint provider ABI implements event_strcpy. This dynamic check
- * can be removed when the tracepoint provider ABI moves to 2.
- */
-#if (LTTNG_UST_PROVIDER_MAJOR > 1)
-#error "Tracepoint probe provider major version has changed. Please remove dynamic check for has_strcpy."
-#endif
-
 #undef _ctf_string
 #define _ctf_string(_item, _src, _nowrite)                             \
        {                                                                       \
@@ -707,12 +734,8 @@ size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args))      \
                        ((_src) ? (_src) : __LTTNG_UST_NULL_STRING);            \
                lib_ring_buffer_align_ctx(&__ctx,                               \
                        lttng_alignof(*__ctf_tmp_string));                      \
-               if (__chan->ops->u.has_strcpy)                                  \
-                       __chan->ops->event_strcpy(&__ctx, __ctf_tmp_string,     \
-                               __get_dynamic_len(dest));                       \
-               else                                                            \
-                       __chan->ops->event_write(&__ctx, __ctf_tmp_string,      \
-                               __get_dynamic_len(dest));                       \
+               __chan->ops->event_strcpy(&__ctx, __ctf_tmp_string,             \
+                       __get_dynamic_len(dest));                               \
        }
 
 
@@ -808,8 +831,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.025342 seconds and 4 git commands to generate.