Fix: move "user" attribute from field to type
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 29 Sep 2022 19:06:58 +0000 (15:06 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 29 Sep 2022 21:01:54 +0000 (17:01 -0400)
The "user" field attribute (copy from userspace) is not taken into
account in the bytecode specialization and interpreter recursive
traversal through composed types (LOAD_FIELD bytecode instructions).

Those are currently used by the filter expressions which access fields
nested within composed types.

Move the "user" attribute from the event fields to the integer and
string types. This will allow ensuring that the bytecode specialization
and interpreter have access to this user attribute even in nested types
(e.g. arrays, sequences) in a subsequent change.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I093d61c98bf725b2974f4a19cae560b7fc147f4f

instrumentation/events/lttng-module/net.h
instrumentation/syscalls/headers/syscalls_pointers_override.h
lttng-events.h
lttng-filter.c
probes/lttng-tracepoint-event-impl.h

index c66a6dba3fe9310bd6c929aac9224cc073b1b267..53f95f498dbfa6580716c4a2007a7612db03ad47 100644 (file)
@@ -36,52 +36,52 @@ static struct lttng_event_field tcpfields[] = {
        [0] = {
                .name = "source_port",
                .type = __type_integer(uint16_t, 0, 0, 0,
        [0] = {
                .name = "source_port",
                .type = __type_integer(uint16_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [1] = {
                .name = "dest_port",
                .type = __type_integer(uint16_t, 0, 0, 0,
        },
        [1] = {
                .name = "dest_port",
                .type = __type_integer(uint16_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [2] = {
                .name = "seq",
                .type = __type_integer(uint32_t, 0, 0, 0,
        },
        [2] = {
                .name = "seq",
                .type = __type_integer(uint32_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [3] = {
                .name = "ack_seq",
                .type = __type_integer(uint32_t, 0, 0, 0,
        },
        [3] = {
                .name = "ack_seq",
                .type = __type_integer(uint32_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [4] = {
                .name = "data_offset",
                .type = __type_integer(uint8_t, 4, 4, 0,
        },
        [4] = {
                .name = "data_offset",
                .type = __type_integer(uint8_t, 4, 4, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [5] = {
                .name = "reserved",
                .type = __type_integer(uint8_t, 3, 1, 0,
        },
        [5] = {
                .name = "reserved",
                .type = __type_integer(uint8_t, 3, 1, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [6] = {
                .name = "flags",
                .type = __type_integer(uint8_t, 9, 1, 0,
        },
        [6] = {
                .name = "flags",
                .type = __type_integer(uint8_t, 9, 1, 0,
-                               __BIG_ENDIAN, 16, none),
+                               __BIG_ENDIAN, 0, 16, none),
        },
        [7] = {
                .name = "window_size",
                .type = __type_integer(uint16_t, 0, 0, 0,
        },
        [7] = {
                .name = "window_size",
                .type = __type_integer(uint16_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [8] = {
                .name = "checksum",
                .type = __type_integer(uint16_t, 0, 0, 0,
        },
        [8] = {
                .name = "checksum",
                .type = __type_integer(uint16_t, 0, 0, 0,
-                               __BIG_ENDIAN, 16, none),
+                               __BIG_ENDIAN, 0, 16, none),
        },
        [9] = {
                .name = "urg_ptr",
                .type = __type_integer(uint16_t, 0, 0, 0,
        },
        [9] = {
                .name = "urg_ptr",
                .type = __type_integer(uint16_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
 };
 
        },
 };
 
@@ -183,37 +183,37 @@ static struct lttng_event_field ipv4fields[] = {
        [0] = {
                .name = "version",
                .type = __type_integer(uint8_t, 4, 4, 0,
        [0] = {
                .name = "version",
                .type = __type_integer(uint8_t, 4, 4, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [1] = {
                .name = "ihl",
                .type = __type_integer(uint8_t, 4, 4, 0,
        },
        [1] = {
                .name = "ihl",
                .type = __type_integer(uint8_t, 4, 4, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [2] = {
                .name = "tos",
                .type = __type_integer(uint8_t, 0, 0, 0,
        },
        [2] = {
                .name = "tos",
                .type = __type_integer(uint8_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [3] = {
                .name = "tot_len",
                .type = __type_integer(uint16_t, 0, 0, 0,
        },
        [3] = {
                .name = "tot_len",
                .type = __type_integer(uint16_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [4] = {
                .name = "id",
                .type = __type_integer(uint16_t, 0, 0, 0,
        },
        [4] = {
                .name = "id",
                .type = __type_integer(uint16_t, 0, 0, 0,
-                               __BIG_ENDIAN, 16, none),
+                               __BIG_ENDIAN, 0, 16, none),
        },
        [5] = {
                .name = "frag_off",
                .type = __type_integer(uint16_t, 0, 0, 0,
        },
        [5] = {
                .name = "frag_off",
                .type = __type_integer(uint16_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [6] = {
                .name = "ttl",
                .type = __type_integer(uint8_t, 0, 0, 0,
        },
        [6] = {
                .name = "ttl",
                .type = __type_integer(uint8_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [7] = {
                .name = "protocol",
        },
        [7] = {
                .name = "protocol",
@@ -228,6 +228,7 @@ static struct lttng_event_field ipv4fields[] = {
                                .reverse_byte_order =
                                        __BIG_ENDIAN != __BYTE_ORDER,
                                .base = 10,
                                .reverse_byte_order =
                                        __BIG_ENDIAN != __BYTE_ORDER,
                                .base = 10,
+                               .user = 0,
                                .encoding = lttng_encode_none,
                        },
                },
                                .encoding = lttng_encode_none,
                        },
                },
@@ -235,7 +236,7 @@ static struct lttng_event_field ipv4fields[] = {
        [8] = {
                .name = "checksum",
                .type = __type_integer(uint16_t, 0, 0, 0,
        [8] = {
                .name = "checksum",
                .type = __type_integer(uint16_t, 0, 0, 0,
-                               __BIG_ENDIAN, 16, none),
+                               __BIG_ENDIAN, 0, 16, none),
        },
        [9] = {
                .name = "saddr",
        },
        [9] = {
                .name = "saddr",
@@ -243,7 +244,7 @@ static struct lttng_event_field ipv4fields[] = {
                        .atype = atype_array,
                        .u.array.elem_type =
                                __type_integer(uint8_t, 0, 0, 0,
                        .atype = atype_array,
                        .u.array.elem_type =
                                __type_integer(uint8_t, 0, 0, 0,
-                                       __BIG_ENDIAN, 10, none),
+                                       __BIG_ENDIAN, 0, 10, none),
                        .u.array.length = 4,
                        .u.array.elem_alignment = lttng_alignof(uint8_t),
                },
                        .u.array.length = 4,
                        .u.array.elem_alignment = lttng_alignof(uint8_t),
                },
@@ -254,7 +255,7 @@ static struct lttng_event_field ipv4fields[] = {
                        .atype = atype_array,
                        .u.array.elem_type =
                                __type_integer(uint8_t, 0, 0, 0,
                        .atype = atype_array,
                        .u.array.elem_type =
                                __type_integer(uint8_t, 0, 0, 0,
-                                       __BIG_ENDIAN, 10, none),
+                                       __BIG_ENDIAN, 0, 10, none),
                        .u.array.length = 4,
                        .u.array.elem_alignment = lttng_alignof(uint8_t),
                },
                        .u.array.length = 4,
                        .u.array.elem_alignment = lttng_alignof(uint8_t),
                },
@@ -270,6 +271,7 @@ static struct lttng_event_field ipv4fields[] = {
                                .signedness = 0,
                                .reverse_byte_order = 0,
                                .base = 10,
                                .signedness = 0,
                                .reverse_byte_order = 0,
                                .base = 10,
+                               .user = 0,
                                .encoding = lttng_encode_none,
                        },
                },
                                .encoding = lttng_encode_none,
                        },
                },
@@ -289,12 +291,12 @@ static struct lttng_event_field ipv6fields[] = {
        [0] = {
                .name = "version",
                .type = __type_integer(uint8_t, 4, 4, 0,
        [0] = {
                .name = "version",
                .type = __type_integer(uint8_t, 4, 4, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [1] = {
                .name = "prio",
                .type = __type_integer(uint8_t, 4, 4, 0,
        },
        [1] = {
                .name = "prio",
                .type = __type_integer(uint8_t, 4, 4, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [2] = {
                .name = "flow_lbl",
        },
        [2] = {
                .name = "flow_lbl",
@@ -302,7 +304,7 @@ static struct lttng_event_field ipv6fields[] = {
                        .atype = atype_array,
                        .u.array.elem_type =
                                __type_integer(uint8_t, 0, 0, 0,
                        .atype = atype_array,
                        .u.array.elem_type =
                                __type_integer(uint8_t, 0, 0, 0,
-                                       __BIG_ENDIAN, 16, none),
+                                       __BIG_ENDIAN, 0, 16, none),
                        .u.array.length = 3,
                        .u.array.elem_alignment = lttng_alignof(uint8_t),
                },
                        .u.array.length = 3,
                        .u.array.elem_alignment = lttng_alignof(uint8_t),
                },
@@ -310,7 +312,7 @@ static struct lttng_event_field ipv6fields[] = {
        [3] = {
                .name = "payload_len",
                .type = __type_integer(uint16_t, 0, 0, 0,
        [3] = {
                .name = "payload_len",
                .type = __type_integer(uint16_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [4] = {
                .name = "nexthdr",
        },
        [4] = {
                .name = "nexthdr",
@@ -325,6 +327,7 @@ static struct lttng_event_field ipv6fields[] = {
                                .reverse_byte_order =
                                        __BIG_ENDIAN != __BYTE_ORDER,
                                .base = 10,
                                .reverse_byte_order =
                                        __BIG_ENDIAN != __BYTE_ORDER,
                                .base = 10,
+                               .user = 0,
                                .encoding = lttng_encode_none,
                        },
                },
                                .encoding = lttng_encode_none,
                        },
                },
@@ -332,7 +335,7 @@ static struct lttng_event_field ipv6fields[] = {
        [5] = {
                .name = "hop_limit",
                .type = __type_integer(uint8_t, 0, 0, 0,
        [5] = {
                .name = "hop_limit",
                .type = __type_integer(uint8_t, 0, 0, 0,
-                               __BIG_ENDIAN, 10, none),
+                               __BIG_ENDIAN, 0, 10, none),
        },
        [6] = {
                .name = "saddr",
        },
        [6] = {
                .name = "saddr",
@@ -340,7 +343,7 @@ static struct lttng_event_field ipv6fields[] = {
                        .atype = atype_array,
                        .u.array.elem_type =
                                __type_integer(uint16_t, 0, 0, 0,
                        .atype = atype_array,
                        .u.array.elem_type =
                                __type_integer(uint16_t, 0, 0, 0,
-                                       __BIG_ENDIAN, 16, none),
+                                       __BIG_ENDIAN, 0, 16, none),
                        .u.array.length = 8,
                        .u.array.elem_alignment = lttng_alignof(uint16_t),
                },
                        .u.array.length = 8,
                        .u.array.elem_alignment = lttng_alignof(uint16_t),
                },
@@ -351,7 +354,7 @@ static struct lttng_event_field ipv6fields[] = {
                        .atype = atype_array,
                        .u.array.elem_type =
                                __type_integer(uint16_t, 0, 0, 0,
                        .atype = atype_array,
                        .u.array.elem_type =
                                __type_integer(uint16_t, 0, 0, 0,
-                                       __BIG_ENDIAN, 16, none),
+                                       __BIG_ENDIAN, 0, 16, none),
                        .u.array.length = 8,
                        .u.array.elem_alignment = lttng_alignof(uint16_t),
                },
                        .u.array.length = 8,
                        .u.array.elem_alignment = lttng_alignof(uint16_t),
                },
@@ -367,6 +370,7 @@ static struct lttng_event_field ipv6fields[] = {
                                .signedness = 0,
                                .reverse_byte_order = 0,
                                .base = 10,
                                .signedness = 0,
                                .reverse_byte_order = 0,
                                .base = 10,
+                               .user = 0,
                                .encoding = lttng_encode_none,
                        },
                },
                                .encoding = lttng_encode_none,
                        },
                },
index cdc5645001a06fd98ab0b01d12a18a040d9df2b0..2dcef0bda24ffd5032b0e5758ed42dbd2aafbda0 100644 (file)
@@ -149,9 +149,9 @@ end:        ; /* Label at end of compound statement. */                                     \
                ctf_custom_type(                                                                        \
                        .atype = atype_sequence,                                                        \
                        .u.sequence.length_type = __type_integer(                                       \
                ctf_custom_type(                                                                        \
                        .atype = atype_sequence,                                                        \
                        .u.sequence.length_type = __type_integer(                                       \
-                               uint8_t, 0, 0, 0, __BYTE_ORDER, 10, none),                              \
+                               uint8_t, 0, 0, 0, __BYTE_ORDER, 0, 10, none),                           \
                        .u.sequence.elem_type = __type_integer(uint8_t, 0, 0, 0,                        \
                        .u.sequence.elem_type = __type_integer(uint8_t, 0, 0, 0,                        \
-                               __BYTE_ORDER, 16, none),                                                \
+                               __BYTE_ORDER, 0, 16, none),                                             \
                ),                                                                                      \
                name,                                                                                   \
                ctf_custom_code(                                                                        \
                ),                                                                                      \
                name,                                                                                   \
                ctf_custom_code(                                                                        \
@@ -186,9 +186,9 @@ end:        ; /* Label at end of compound statement. */                                     \
                ctf_custom_type(                                                                        \
                        .atype = atype_sequence,                                                        \
                        .u.sequence.length_type = __type_integer(                                       \
                ctf_custom_type(                                                                        \
                        .atype = atype_sequence,                                                        \
                        .u.sequence.length_type = __type_integer(                                       \
-                               uint8_t, 0, 0, 0, __BYTE_ORDER, 10, none),                              \
+                               uint8_t, 0, 0, 0, __BYTE_ORDER, 0, 10, none),                           \
                        .u.sequence.elem_type = __type_integer(uint8_t, 0, 0, 0,                        \
                        .u.sequence.elem_type = __type_integer(uint8_t, 0, 0, 0,                        \
-                               __BYTE_ORDER, 16, none),                                                \
+                               __BYTE_ORDER, 0, 16, none),                                             \
                ),                                                                                      \
                name,                                                                                   \
                ctf_custom_code(                                                                        \
                ),                                                                                      \
                name,                                                                                   \
                ctf_custom_code(                                                                        \
@@ -310,43 +310,43 @@ SC_LTTNG_TRACEPOINT_EVENT_CODE(pselect6,
 static struct lttng_event_field lttng_pollfd_flag_fields[] = {
        [ilog2(POLLIN)] = {
                .name = "POLLIN",
 static struct lttng_event_field lttng_pollfd_flag_fields[] = {
        [ilog2(POLLIN)] = {
                .name = "POLLIN",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        [ilog2(POLLPRI)] = {
                .name = "POLLPRI",
        },
        [ilog2(POLLPRI)] = {
                .name = "POLLPRI",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        [ilog2(POLLOUT)] = {
                .name = "POLLOUT",
        },
        [ilog2(POLLOUT)] = {
                .name = "POLLOUT",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        [ilog2(POLLERR)] = {
                .name = "POLLERR",
        },
        [ilog2(POLLERR)] = {
                .name = "POLLERR",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        [ilog2(POLLHUP)] = {
                .name = "POLLHUP",
        },
        [ilog2(POLLHUP)] = {
                .name = "POLLHUP",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        [ilog2(POLLNVAL)] = {
                .name = "POLLNVAL",
        },
        [ilog2(POLLNVAL)] = {
                .name = "POLLNVAL",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        [ilog2(LTTNG_POLL_NRFLAGS)] = {
                .name = "padding",
                .type = __type_integer(int, POLL_FLAGS_PADDING_SIZE, 1, 0,
        },
        [ilog2(LTTNG_POLL_NRFLAGS)] = {
                .name = "padding",
                .type = __type_integer(int, POLL_FLAGS_PADDING_SIZE, 1, 0,
-                               __LITTLE_ENDIAN, 10, none),
+                               __LITTLE_ENDIAN, 0, 10, none),
        },
 };
 
 static struct lttng_event_field lttng_pollfd_fields[] = {
        [0] = {
                .name = "fd",
        },
 };
 
 static struct lttng_event_field lttng_pollfd_fields[] = {
        [0] = {
                .name = "fd",
-               .type = __type_integer(int, 0, 0, 0, __BYTE_ORDER, 10, none),
+               .type = __type_integer(int, 0, 0, 0, __BYTE_ORDER, 0, 10, none),
        },
        [1] = {
                .name = "raw_events",
        },
        [1] = {
                .name = "raw_events",
-               .type = __type_integer(short, 0, 0, 0, __BYTE_ORDER, 16, none),
+               .type = __type_integer(short, 0, 0, 0, __BYTE_ORDER, 0, 16, none),
        },
        [2] = {
                .name = "events",
        },
        [2] = {
                .name = "events",
@@ -572,32 +572,32 @@ static struct lttng_event_field lttng_epoll_ctl_events_fields[] = {
        /* 0x0001 */
        [ilog2(POLLIN)] = {
                .name = "EPOLLIN",
        /* 0x0001 */
        [ilog2(POLLIN)] = {
                .name = "EPOLLIN",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        /* 0x0002 */
        [ilog2(POLLPRI)] = {
                .name = "EPOLLPRI",
        },
        /* 0x0002 */
        [ilog2(POLLPRI)] = {
                .name = "EPOLLPRI",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        /* 0x0004 */
        [ilog2(POLLOUT)] = {
                .name = "EPOLLOUT",
        },
        /* 0x0004 */
        [ilog2(POLLOUT)] = {
                .name = "EPOLLOUT",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        /* 0x0008 */
        [ilog2(POLLERR)] = {
                .name = "EPOLLERR",
        },
        /* 0x0008 */
        [ilog2(POLLERR)] = {
                .name = "EPOLLERR",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        /* 0x0010 */
        [ilog2(POLLHUP)] = {
                .name = "EPOLLHUP",
        },
        /* 0x0010 */
        [ilog2(POLLHUP)] = {
                .name = "EPOLLHUP",
-               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 10, none),
+               .type = __type_integer(int, 1, 1, 0, __LITTLE_ENDIAN, 0, 10, none),
        },
        [ilog2(LTTNG_EPOLL_NRFLAGS)] = {
                .name = "padding",
                .type = __type_integer(int, EPOLL_FLAGS_PADDING_SIZE, 1, 0,
        },
        [ilog2(LTTNG_EPOLL_NRFLAGS)] = {
                .name = "padding",
                .type = __type_integer(int, EPOLL_FLAGS_PADDING_SIZE, 1, 0,
-                               __LITTLE_ENDIAN, 10, none),
+                               __LITTLE_ENDIAN, 0, 10, none),
        },
 
 };
        },
 
 };
@@ -605,11 +605,11 @@ static struct lttng_event_field lttng_epoll_ctl_events_fields[] = {
 static struct lttng_event_field lttng_epoll_data_fields[] = {
        [0] = {
                .name = "u64",
 static struct lttng_event_field lttng_epoll_data_fields[] = {
        [0] = {
                .name = "u64",
-               .type = __type_integer(uint64_t, 0, 0, 0, __BYTE_ORDER, 16, none),
+               .type = __type_integer(uint64_t, 0, 0, 0, __BYTE_ORDER, 0, 16, none),
        },
        [1] = {
                .name = "fd",
        },
        [1] = {
                .name = "fd",
-               .type = __type_integer(int, 0, 0, 0, __BYTE_ORDER, 10, none),
+               .type = __type_integer(int, 0, 0, 0, __BYTE_ORDER, 0, 10, none),
        },
 };
 
        },
 };
 
@@ -624,7 +624,7 @@ static struct lttng_event_field epoll_ctl_fields[] = {
        },
        [1] = {
                .name = "raw_events",
        },
        [1] = {
                .name = "raw_events",
-               .type = __type_integer(uint32_t, 0, 0, 0, __BYTE_ORDER, 16, none),
+               .type = __type_integer(uint32_t, 0, 0, 0, __BYTE_ORDER, 0, 16, none),
        },
        [2] = {
                .name = "events",
        },
        [2] = {
                .name = "events",
@@ -702,7 +702,7 @@ static struct lttng_event_field lttng_epoll_wait_fields[] = {
        },
        [1] = {
                .name = "raw_events",
        },
        [1] = {
                .name = "raw_events",
-               .type = __type_integer(uint32_t, 0, 0, 0, __BYTE_ORDER, 16, none),
+               .type = __type_integer(uint32_t, 0, 0, 0, __BYTE_ORDER, 0, 16, none),
        },
        [2] = {
                .name = "events",
        },
        [2] = {
                .name = "events",
index e2cd544559d512b7443def6035569060a3ced300..da2637d7800e88cc70c61f1898ac88525a9327bb 100644 (file)
@@ -75,7 +75,7 @@ struct lttng_enum_entry {
 };
 
 #define __type_integer(_type, _size, _alignment, _signedness,  \
 };
 
 #define __type_integer(_type, _size, _alignment, _signedness,  \
-               _byte_order, _base, _encoding)  \
+               _byte_order, _user, _base, _encoding)           \
        {                                                       \
            .atype = atype_integer,                             \
            .u.basic.integer =                                  \
        {                                                       \
            .atype = atype_integer,                             \
            .u.basic.integer =                                  \
@@ -83,8 +83,9 @@ struct lttng_enum_entry {
                  .size = (_size) ? : sizeof(_type) * CHAR_BIT, \
                  .alignment = (_alignment) ? : lttng_alignof(_type) * CHAR_BIT, \
                  .signedness = (_signedness) >= 0 ? (_signedness) : lttng_is_signed_type(_type), \
                  .size = (_size) ? : sizeof(_type) * CHAR_BIT, \
                  .alignment = (_alignment) ? : lttng_alignof(_type) * CHAR_BIT, \
                  .signedness = (_signedness) >= 0 ? (_signedness) : lttng_is_signed_type(_type), \
-                 .reverse_byte_order = _byte_order != __BYTE_ORDER, \
-                 .base = _base,                                \
+                 .reverse_byte_order = (_byte_order) != __BYTE_ORDER, \
+                 .base = (_base),                              \
+                 .user = (_user),                              \
                  .encoding = lttng_encode_##_encoding,         \
                },                                              \
        }                                                       \
                  .encoding = lttng_encode_##_encoding,         \
                },                                              \
        }                                                       \
@@ -93,7 +94,8 @@ struct lttng_integer_type {
        unsigned int size;              /* in bits */
        unsigned short alignment;       /* in bits */
        unsigned int signedness:1,
        unsigned int size;              /* in bits */
        unsigned short alignment;       /* in bits */
        unsigned int signedness:1,
-               reverse_byte_order:1;
+               reverse_byte_order:1,
+               user:1;                 /* fetch from user-space */
        unsigned int base;              /* 2, 8, 10, 16, for pretty print */
        enum lttng_string_encodings encoding;
 };
        unsigned int base;              /* 2, 8, 10, 16, for pretty print */
        enum lttng_string_encodings encoding;
 };
@@ -106,6 +108,7 @@ union _lttng_basic_type {
        } enumeration;
        struct {
                enum lttng_string_encodings encoding;
        } enumeration;
        struct {
                enum lttng_string_encodings encoding;
+               unsigned int user:1;                    /* fetch from user-space */
        } string;
 };
 
        } string;
 };
 
@@ -161,8 +164,7 @@ struct lttng_enum_desc {
 struct lttng_event_field {
        const char *name;
        struct lttng_type type;
 struct lttng_event_field {
        const char *name;
        struct lttng_type type;
-       unsigned int nowrite:1,         /* do not write into trace */
-                       user:1;         /* fetch from user-space */
+       unsigned int nowrite:1;         /* do not write into trace */
 };
 
 union lttng_ctx_value {
 };
 
 union lttng_ctx_value {
index 05ce683ee72121a659cf620dcca2c3dcefb593c2..ec6fd576097af828dbe3dfa064691ca3545119b4 100644 (file)
@@ -246,7 +246,7 @@ int apply_field_reloc(struct lttng_event *event,
 
                        if (elem_type->atype != atype_integer || elem_type->u.basic.integer.encoding == lttng_encode_none)
                                return -EINVAL;
 
                        if (elem_type->atype != atype_integer || elem_type->u.basic.integer.encoding == lttng_encode_none)
                                return -EINVAL;
-                       if (field->user)
+                       if (elem_type->u.basic.integer.user)
                                op->op = FILTER_OP_LOAD_FIELD_REF_USER_SEQUENCE;
                        else
                                op->op = FILTER_OP_LOAD_FIELD_REF_SEQUENCE;
                                op->op = FILTER_OP_LOAD_FIELD_REF_USER_SEQUENCE;
                        else
                                op->op = FILTER_OP_LOAD_FIELD_REF_SEQUENCE;
@@ -258,14 +258,14 @@ int apply_field_reloc(struct lttng_event *event,
 
                        if (elem_type->atype != atype_integer || elem_type->u.basic.integer.encoding == lttng_encode_none)
                                return -EINVAL;
 
                        if (elem_type->atype != atype_integer || elem_type->u.basic.integer.encoding == lttng_encode_none)
                                return -EINVAL;
-                       if (field->user)
+                       if (elem_type->u.basic.integer.user)
                                op->op = FILTER_OP_LOAD_FIELD_REF_USER_SEQUENCE;
                        else
                                op->op = FILTER_OP_LOAD_FIELD_REF_SEQUENCE;
                        break;
                }
                case atype_string:
                                op->op = FILTER_OP_LOAD_FIELD_REF_USER_SEQUENCE;
                        else
                                op->op = FILTER_OP_LOAD_FIELD_REF_SEQUENCE;
                        break;
                }
                case atype_string:
-                       if (field->user)
+                       if (field->type.u.basic.string.user)
                                op->op = FILTER_OP_LOAD_FIELD_REF_USER_STRING;
                        else
                                op->op = FILTER_OP_LOAD_FIELD_REF_STRING;
                                op->op = FILTER_OP_LOAD_FIELD_REF_USER_STRING;
                        else
                                op->op = FILTER_OP_LOAD_FIELD_REF_STRING;
@@ -334,7 +334,7 @@ int apply_context_reloc(struct lttng_event *event,
 
                        if (elem_type->atype != atype_integer || elem_type->u.basic.integer.encoding == lttng_encode_none)
                                return -EINVAL;
 
                        if (elem_type->atype != atype_integer || elem_type->u.basic.integer.encoding == lttng_encode_none)
                                return -EINVAL;
-                       BUG_ON(ctx_field->event_field.user);
+                       BUG_ON(elem_type->u.basic.integer.user);
                        op->op = FILTER_OP_GET_CONTEXT_REF_STRING;
                        break;
                }
                        op->op = FILTER_OP_GET_CONTEXT_REF_STRING;
                        break;
                }
@@ -344,12 +344,12 @@ int apply_context_reloc(struct lttng_event *event,
 
                        if (elem_type->atype != atype_integer || elem_type->u.basic.integer.encoding == lttng_encode_none)
                                return -EINVAL;
 
                        if (elem_type->atype != atype_integer || elem_type->u.basic.integer.encoding == lttng_encode_none)
                                return -EINVAL;
-                       BUG_ON(ctx_field->event_field.user);
+                       BUG_ON(elem_type->u.basic.integer.user);
                        op->op = FILTER_OP_GET_CONTEXT_REF_STRING;
                        break;
                }
                case atype_string:
                        op->op = FILTER_OP_GET_CONTEXT_REF_STRING;
                        break;
                }
                case atype_string:
-                       BUG_ON(ctx_field->event_field.user);
+                       BUG_ON(ctx_field->event_field.type.u.basic.string.user);
                        op->op = FILTER_OP_GET_CONTEXT_REF_STRING;
                        break;
                case atype_struct:      /* Unsupported. */
                        op->op = FILTER_OP_GET_CONTEXT_REF_STRING;
                        break;
                case atype_struct:      /* Unsupported. */
index 4231afadcd990cbc9f6129e97a10256b843b22a7..b40fbd8107a2f0d38f437dff5fd465ce08df4b53 100644 (file)
@@ -257,9 +257,8 @@ void __event_template_proto___##_name(void);
 #define _ctf_integer_ext(_type, _item, _src, _byte_order, _base, _user, _nowrite) \
        {                                                       \
          .name = #_item,                                       \
 #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, _user, _base, none),\
          .nowrite = _nowrite,                                  \
          .nowrite = _nowrite,                                  \
-         .user = _user,                                        \
        },
 
 #undef _ctf_array_encoded
        },
 
 #undef _ctf_array_encoded
@@ -273,13 +272,12 @@ void __event_template_proto___##_name(void);
                        {                                       \
                          .array =                              \
                                {                               \
                        {                                       \
                          .array =                              \
                                {                               \
-                                 .elem_type = __type_integer(_type, 0, 0, 0, _byte_order, _base, _encoding), \
+                                 .elem_type = __type_integer(_type, 0, 0, 0, _byte_order, _user, _base, _encoding), \
                                  .length = _length,            \
                                }                               \
                        }                                       \
                },                                              \
          .nowrite = _nowrite,                                  \
                                  .length = _length,            \
                                }                               \
                        }                                       \
                },                                              \
          .nowrite = _nowrite,                                  \
-         .user = _user,                                        \
        },
 
 #undef _ctf_array_bitfield
        },
 
 #undef _ctf_array_bitfield
@@ -293,14 +291,13 @@ void __event_template_proto___##_name(void);
                        {                                       \
                          .array =                              \
                                {                               \
                        {                                       \
                          .array =                              \
                                {                               \
-                                 .elem_type = __type_integer(_type, 1, 1, 0, __LITTLE_ENDIAN, 10, none), \
+                                 .elem_type = __type_integer(_type, 1, 1, 0, __LITTLE_ENDIAN, _user, 10, none), \
                                  .length = (_length) * sizeof(_type) * CHAR_BIT, \
                                  .elem_alignment = lttng_alignof(_type), \
                                }                               \
                        }                                       \
                },                                              \
          .nowrite = _nowrite,                                  \
                                  .length = (_length) * sizeof(_type) * CHAR_BIT, \
                                  .elem_alignment = lttng_alignof(_type), \
                                }                               \
                        }                                       \
                },                                              \
          .nowrite = _nowrite,                                  \
-         .user = _user,                                        \
        },
 
 
        },
 
 
@@ -317,13 +314,12 @@ void __event_template_proto___##_name(void);
                        {                                       \
                          .sequence =                           \
                                {                               \
                        {                                       \
                          .sequence =                           \
                                {                               \
-                                 .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_type = __type_integer(_length_type, 0, 0, 0, __BYTE_ORDER, 0, 10, none), \
+                                 .elem_type = __type_integer(_type, 0, 0, -1, _byte_order, _user, _base, _encoding), \
                                },                              \
                        },                                      \
                },                                              \
          .nowrite = _nowrite,                                  \
                                },                              \
                        },                                      \
                },                                              \
          .nowrite = _nowrite,                                  \
-         .user = _user,                                        \
        },
 
 #undef _ctf_sequence_bitfield
        },
 
 #undef _ctf_sequence_bitfield
@@ -339,14 +335,13 @@ void __event_template_proto___##_name(void);
                        {                                       \
                          .sequence =                           \
                                {                               \
                        {                                       \
                          .sequence =                           \
                                {                               \
-                                 .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), \
+                                 .length_type = __type_integer(_length_type, 0, 0, 0, __BYTE_ORDER, 0, 10, none), \
+                                 .elem_type = __type_integer(_type, 1, 1, 0, __LITTLE_ENDIAN, _user, 10, none), \
                                  .elem_alignment = lttng_alignof(_type), \
                                },                              \
                        },                                      \
                },                                              \
          .nowrite = _nowrite,                                  \
                                  .elem_alignment = lttng_alignof(_type), \
                                },                              \
                        },                                      \
                },                                              \
          .nowrite = _nowrite,                                  \
-         .user = _user,                                        \
        },
 
 #undef _ctf_string
        },
 
 #undef _ctf_string
@@ -358,11 +353,10 @@ void __event_template_proto___##_name(void);
                  .atype = atype_string,                        \
                  .u =                                          \
                        {                                       \
                  .atype = atype_string,                        \
                  .u =                                          \
                        {                                       \
-                         .basic = { .string = { .encoding = lttng_encode_UTF8 } } \
+                         .basic = { .string = { .encoding = lttng_encode_UTF8, .user = (_user), } } \
                        },                                      \
                },                                              \
          .nowrite = _nowrite,                                  \
                        },                                      \
                },                                              \
          .nowrite = _nowrite,                                  \
-         .user = _user,                                        \
        },
 
 #undef _ctf_enum
        },
 
 #undef _ctf_enum
@@ -380,6 +374,7 @@ void __event_template_proto___##_name(void);
                                                        .alignment = lttng_alignof(_type) * CHAR_BIT, \
                                                        .signedness = lttng_is_signed_type(_type), \
                                                        .reverse_byte_order = 0, \
                                                        .alignment = lttng_alignof(_type) * CHAR_BIT, \
                                                        .signedness = lttng_is_signed_type(_type), \
                                                        .reverse_byte_order = 0, \
+                                                       .user = (_user), \
                                                        .base = 10, \
                                                        .encoding = lttng_encode_none, \
                                                },              \
                                                        .base = 10, \
                                                        .encoding = lttng_encode_none, \
                                                },              \
@@ -388,7 +383,6 @@ void __event_template_proto___##_name(void);
                        },                                      \
                },                                              \
                .nowrite = _nowrite,                            \
                        },                                      \
                },                                              \
                .nowrite = _nowrite,                            \
-               .user = _user,                                  \
        },
 
 #undef ctf_custom_field
        },
 
 #undef ctf_custom_field
@@ -397,7 +391,6 @@ void __event_template_proto___##_name(void);
                .name = #_item,                                 \
                .type = { _type },                              \
                .nowrite = 0,                                   \
                .name = #_item,                                 \
                .type = { _type },                              \
                .nowrite = 0,                                   \
-               .user = 0,                                      \
        },
 
 #undef ctf_custom_type
        },
 
 #undef ctf_custom_type
This page took 0.039395 seconds and 4 git commands to generate.