X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=include%2Finstrumentation%2Fsyscalls%2Fheaders%2Fsyscalls_pointers_override.h;h=00e5990c18873377a4a9c20b5af9780d2c294eb0;hb=0d49efc853b23612f434bfaa5bddf4319abe7883;hp=2b4918104e24990597f8881f1eda099e056b2824;hpb=437d5aa59380583ce1cd14d394a53b398be1275d;p=lttng-modules.git diff --git a/include/instrumentation/syscalls/headers/syscalls_pointers_override.h b/include/instrumentation/syscalls/headers/syscalls_pointers_override.h index 2b491810..00e5990c 100644 --- a/include/instrumentation/syscalls/headers/syscalls_pointers_override.h +++ b/include/instrumentation/syscalls/headers/syscalls_pointers_override.h @@ -14,6 +14,8 @@ SC_LTTNG_TRACEPOINT_EVENT(execve, ) ) +#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM + /* * Clone()'s `flags` field has two parts: * 1. exit signal: the least significant byte of the `unsigned long` is @@ -121,7 +123,7 @@ SC_LTTNG_TRACEPOINT_ENUM(lttng_clone_option_flags, lttng_kernel_static_type_enum(&__enum_lttng_clone_exit_signal_flags, \ lttng_kernel_static_type_integer(CLONE_EXIT_SIGNAL_FLAG_RESERVED_BITS, \ 1, 0, __BYTE_ORDER, 16)), \ - false, false, false) + false, false) #define LTTNG_CLONE_FLAGS_OPTIONS \ lttng_kernel_static_event_field("options", \ @@ -129,7 +131,7 @@ SC_LTTNG_TRACEPOINT_ENUM(lttng_clone_option_flags, lttng_kernel_static_type_integer( \ sizeof(unsigned long) * CHAR_BIT - CLONE_EXIT_SIGNAL_FLAG_RESERVED_BITS, \ 1, 0, __BYTE_ORDER, 16)), \ - false, false, false) + false, false) #if (__BYTE_ORDER == __LITTLE_ENDIAN) #define LTTNG_CLONE_FLAGS \ @@ -145,6 +147,7 @@ lttng_kernel_static_event_field_array( \ ) #endif +#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */ #define OVERRIDE_32_clone #define OVERRIDE_64_clone @@ -156,6 +159,7 @@ SC_LTTNG_TRACEPOINT_EVENT(clone, TP_FIELDS( sc_exit(ctf_integer(long, ret, ret)) sc_in( +#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM ctf_custom_field( ctf_custom_type( lttng_kernel_static_type_struct(2, LTTNG_CLONE_FLAGS, lttng_alignof(unsigned long) * CHAR_BIT) @@ -165,6 +169,9 @@ SC_LTTNG_TRACEPOINT_EVENT(clone, ctf_integer_type(unsigned long, clone_flags) ) ) +#else + ctf_integer_hex(unsigned long, flags, clone_flags) +#endif ) sc_in(ctf_integer_hex(unsigned long, newsp, newsp)) sc_in(ctf_integer_hex(void *, parent_tid, parent_tid)) @@ -306,8 +313,7 @@ end: ; /* Label at end of compound statement. */ \ ) \ ctf_custom_field( \ ctf_custom_type( \ - lttng_kernel_static_type_sequence( \ - "_" #name "_length", \ + lttng_kernel_static_type_sequence(NULL, \ lttng_kernel_static_type_integer_from_type(uint8_t, __BYTE_ORDER, 16), \ 0, \ none) \ @@ -352,7 +358,7 @@ end: ; /* Label at end of compound statement. */ \ ) \ ctf_custom_field( \ ctf_custom_type( \ - lttng_kernel_static_type_sequence("_" #name "_length", \ + lttng_kernel_static_type_sequence(NULL, \ lttng_kernel_static_type_integer_from_type(uint8_t, __BYTE_ORDER, 16), \ 0, \ none) \ @@ -458,6 +464,7 @@ SC_LTTNG_TRACEPOINT_EVENT_CODE(pselect6, ) #endif /* defined(CONFIG_X86_32) || defined(CONFIG_X86_64) || defined(CONFIG_ARM64) || defined(CONFIG_ARM) */ +#ifdef LTTNG_CREATE_FIELD_METADATA #ifndef ONCE_LTTNG_TRACE_POLL_H #define ONCE_LTTNG_TRACE_POLL_H @@ -465,45 +472,58 @@ SC_LTTNG_TRACEPOINT_EVENT_CODE(pselect6, #define POLL_FLAGS_PADDING_SIZE (sizeof(uint8_t) * BITS_PER_BYTE) - \ ilog2(LTTNG_POLL_NRFLAGS - 1) +#ifndef LTTNG_TRACEPOINT_TYPE_EXTERN /* * Only extract the values specified by iBCS2 for now. */ static const struct lttng_kernel_event_field *lttng_pollfd_flag_fields[] = { [ilog2(POLLIN)] = lttng_kernel_static_event_field("POLLIN", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), [ilog2(POLLPRI)] = lttng_kernel_static_event_field("POLLPRI", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), [ilog2(POLLOUT)] = lttng_kernel_static_event_field("POLLOUT", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), [ilog2(POLLERR)] = lttng_kernel_static_event_field("POLLERR", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), [ilog2(POLLHUP)] = lttng_kernel_static_event_field("POLLHUP", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), [ilog2(POLLNVAL)] = lttng_kernel_static_event_field("POLLNVAL", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), [ilog2(LTTNG_POLL_NRFLAGS)] = lttng_kernel_static_event_field("padding", lttng_kernel_static_type_integer(POLL_FLAGS_PADDING_SIZE, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), }; +static_assert(((ARRAY_SIZE(lttng_pollfd_flag_fields) - 1) + POLL_FLAGS_PADDING_SIZE) == sizeof(uint8_t) * BITS_PER_BYTE); + +#endif /* LTTNG_TRACEPOINT_TYPE_EXTERN */ + +LTTNG_TRACEPOINT_TYPE(PARAMS(const struct lttng_kernel_type_struct lttng_pollfd_flag_fields_struct), + PARAMS(lttng_kernel_static_type_struct_init(ARRAY_SIZE(lttng_pollfd_flag_fields), lttng_pollfd_flag_fields, 0))) + +#ifndef LTTNG_TRACEPOINT_TYPE_EXTERN static const struct lttng_kernel_event_field *lttng_pollfd_fields[] = { [0] = lttng_kernel_static_event_field("fd", lttng_kernel_static_type_integer_from_type(int, __BYTE_ORDER, 10), - false, false, false), + false, false), [1] = lttng_kernel_static_event_field("raw_events", lttng_kernel_static_type_integer_from_type(uint16_t, __BYTE_ORDER, 16), - false, false, false), + false, false), [2] = lttng_kernel_static_event_field("events", - lttng_kernel_static_type_struct(ARRAY_SIZE(lttng_pollfd_flag_fields), - lttng_pollfd_flag_fields, 0), - false, false, false), + (const struct lttng_kernel_type_common *) <tng_pollfd_flag_fields_struct, + false, false), }; +#endif /* LTTNG_TRACEPOINT_TYPE_EXTERN */ + +LTTNG_TRACEPOINT_TYPE(PARAMS(const struct lttng_kernel_type_struct lttng_pollfd_fields_struct), + PARAMS(lttng_kernel_static_type_struct_init(ARRAY_SIZE(lttng_pollfd_fields), lttng_pollfd_fields, 0))) #endif /* ONCE_LTTNG_TRACE_POLL_H */ +#endif /* LTTNG_CREATE_FIELD_METADATA */ #define LTTNG_SYSCALL_POLL_locvar \ unsigned int fds_length, fds_max_len, alloc_fds; \ @@ -511,9 +531,6 @@ static const struct lttng_kernel_event_field *lttng_pollfd_fields[] = { uint8_t overflow; #define LTTNG_SYSCALL_POLL_code_pre \ - BUILD_BUG_ON(((ARRAY_SIZE(lttng_pollfd_flag_fields) - 1) + \ - POLL_FLAGS_PADDING_SIZE) != \ - sizeof(uint8_t) * BITS_PER_BYTE); \ tp_locvar->fds = NULL; \ tp_locvar->overflow = 0; \ \ @@ -571,7 +588,7 @@ end: \ ctf_custom_field( \ ctf_custom_type( \ lttng_kernel_static_type_sequence("fds_length", \ - lttng_kernel_static_type_struct(ARRAY_SIZE(lttng_pollfd_fields), lttng_pollfd_fields, 0), \ + (const struct lttng_kernel_type_common *) <tng_pollfd_fields_struct, \ 0, \ none) \ ), \ @@ -593,7 +610,7 @@ end: \ ctf_custom_field( \ ctf_custom_type( \ lttng_kernel_static_type_sequence("fds_length", \ - lttng_kernel_static_type_struct(ARRAY_SIZE(lttng_pollfd_fields), lttng_pollfd_fields, 0), \ + (const struct lttng_kernel_type_common *) <tng_pollfd_fields_struct, \ 0, \ none) \ ), \ @@ -700,6 +717,8 @@ SC_LTTNG_TRACEPOINT_ENUM(lttng_epoll_op, ) ) +#ifdef LTTNG_CREATE_FIELD_METADATA + #ifndef ONCE_LTTNG_TRACE_EPOLL_CTL_H #define ONCE_LTTNG_TRACE_EPOLL_CTL_H @@ -707,6 +726,7 @@ SC_LTTNG_TRACEPOINT_ENUM(lttng_epoll_op, #define EPOLL_FLAGS_PADDING_SIZE (sizeof(uint8_t) * BITS_PER_BYTE) - \ ilog2(LTTNG_EPOLL_NRFLAGS - 1) +#ifndef LTTNG_TRACEPOINT_TYPE_EXTERN /* * Only extract the values specified by iBCS2 for now. */ @@ -714,53 +734,65 @@ static const struct lttng_kernel_event_field *lttng_epoll_ctl_events_fields[] = /* 0x0001 */ [ilog2(POLLIN)] = lttng_kernel_static_event_field("EPOLLIN", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), /* 0x0002 */ [ilog2(POLLPRI)] = lttng_kernel_static_event_field("EPOLLPRI", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), /* 0x0004 */ [ilog2(POLLOUT)] = lttng_kernel_static_event_field("EPOLLOUT", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), /* 0x0008 */ [ilog2(POLLERR)] = lttng_kernel_static_event_field("EPOLLERR", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), /* 0x0010 */ [ilog2(POLLHUP)] = lttng_kernel_static_event_field("EPOLLHUP", lttng_kernel_static_type_integer(1, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), [ilog2(LTTNG_EPOLL_NRFLAGS)] = lttng_kernel_static_event_field("padding", lttng_kernel_static_type_integer(EPOLL_FLAGS_PADDING_SIZE, 1, 0, __LITTLE_ENDIAN, 10), - false, false, false), + false, false), }; +#endif /* LTTNG_TRACEPOINT_TYPE_EXTERN */ +LTTNG_TRACEPOINT_TYPE(PARAMS(const struct lttng_kernel_type_struct lttng_epoll_ctl_events_fields_struct), + PARAMS(lttng_kernel_static_type_struct_init(ARRAY_SIZE(lttng_epoll_ctl_events_fields), lttng_epoll_ctl_events_fields, 0))) + +#ifndef LTTNG_TRACEPOINT_TYPE_EXTERN static const struct lttng_kernel_event_field *lttng_epoll_data_fields[] = { [0] = lttng_kernel_static_event_field("u64", lttng_kernel_static_type_integer_from_type(uint64_t, __BYTE_ORDER, 16), - false, false, false), + false, false), [1] = lttng_kernel_static_event_field("fd", lttng_kernel_static_type_integer_from_type(int, __BYTE_ORDER, 10), - false, false, false), + false, false), }; +#endif /* LTTNG_TRACEPOINT_TYPE_EXTERN */ + +LTTNG_TRACEPOINT_TYPE(PARAMS(const struct lttng_kernel_type_struct lttng_epoll_data_fields_struct), + PARAMS(lttng_kernel_static_type_struct_init(ARRAY_SIZE(lttng_epoll_data_fields), lttng_epoll_data_fields, 0))) +#ifndef LTTNG_TRACEPOINT_TYPE_EXTERN static const struct lttng_kernel_event_field *epoll_ctl_fields[] = { [0] = lttng_kernel_static_event_field("data_union", - lttng_kernel_static_type_struct(ARRAY_SIZE(lttng_epoll_data_fields), - lttng_epoll_data_fields, - 0), - false, false, false), + (const struct lttng_kernel_type_common *) <tng_epoll_data_fields_struct, + false, false), [1] = lttng_kernel_static_event_field("raw_events", lttng_kernel_static_type_integer_from_type(uint32_t, __BYTE_ORDER, 16), - false, false, false), + false, false), [2] = lttng_kernel_static_event_field("events", - lttng_kernel_static_type_struct(ARRAY_SIZE(lttng_epoll_ctl_events_fields), - lttng_epoll_ctl_events_fields, - 0), - false, false, false), + (const struct lttng_kernel_type_common *) <tng_epoll_ctl_events_fields_struct, + false, false), }; +#endif /* LTTNG_TRACEPOINT_TYPE_EXTERN */ + +LTTNG_TRACEPOINT_TYPE(PARAMS(const struct lttng_kernel_type_struct epoll_ctl_fields_struct), + PARAMS(lttng_kernel_static_type_struct_init(ARRAY_SIZE(epoll_ctl_fields), epoll_ctl_fields, 0))) + #endif /* ONCE_LTTNG_TRACE_EPOLL_CTL_H */ +#endif /* LTTNG_CREATE_FIELD_METADATA */ #if defined(CONFIG_X86_32) || defined(CONFIG_X86_64) || defined(CONFIG_ARM64) || defined(CONFIG_ARM) #define OVERRIDE_32_epoll_ctl @@ -785,7 +817,7 @@ SC_LTTNG_TRACEPOINT_EVENT_CODE(epoll_ctl, sc_in( ctf_custom_field( ctf_custom_type( - lttng_kernel_static_type_struct(ARRAY_SIZE(epoll_ctl_fields), epoll_ctl_fields, 0) + (const struct lttng_kernel_type_common *) &epoll_ctl_fields_struct ), event, ctf_custom_code( @@ -811,21 +843,31 @@ SC_LTTNG_TRACEPOINT_EVENT_CODE(epoll_ctl, ) #endif /* defined(CONFIG_X86_32) || defined(CONFIG_X86_64) || defined(CONFIG_ARM64) || defined(CONFIG_ARM) */ +#ifdef LTTNG_CREATE_FIELD_METADATA #ifndef ONCE_LTTNG_TRACE_EPOLL_H #define ONCE_LTTNG_TRACE_EPOLL_H +#ifndef LTTNG_TRACEPOINT_TYPE_EXTERN static const struct lttng_kernel_event_field *lttng_epoll_wait_fields[] = lttng_kernel_static_event_field_array( [0] = lttng_kernel_static_event_field("data_union", - lttng_kernel_static_type_struct(ARRAY_SIZE(lttng_epoll_data_fields), lttng_epoll_data_fields, 0), - false, false, false), + (const struct lttng_kernel_type_common *) <tng_epoll_data_fields_struct, + false, false), [1] = lttng_kernel_static_event_field("raw_events", lttng_kernel_static_type_integer_from_type(uint32_t, __BYTE_ORDER, 16), - false, false, false), + false, false), [2] = lttng_kernel_static_event_field("events", - lttng_kernel_static_type_struct(ARRAY_SIZE(lttng_epoll_ctl_events_fields), lttng_epoll_ctl_events_fields, 0), - false, false, false), + (const struct lttng_kernel_type_common *) <tng_epoll_ctl_events_fields_struct, + false, false), ); +static_assert(((ARRAY_SIZE(lttng_epoll_ctl_events_fields) - 1) + EPOLL_FLAGS_PADDING_SIZE) == sizeof(uint8_t) * BITS_PER_BYTE); + +#endif /* LTTNG_TRACEPOINT_TYPE_EXTERN */ + +LTTNG_TRACEPOINT_TYPE(PARAMS(const struct lttng_kernel_type_struct lttng_epoll_wait_fields_struct), + PARAMS(lttng_kernel_static_type_struct_init(ARRAY_SIZE(lttng_epoll_wait_fields), lttng_epoll_wait_fields, 0))) + #endif /* ONCE_LTTNG_TRACE_EPOLL_H */ +#endif /* LTTNG_CREATE_FIELD_METADATA */ #define LTTNG_SYSCALL_EPOLL_WAIT_locvar \ sc_out( \ @@ -835,9 +877,6 @@ static const struct lttng_kernel_event_field *lttng_epoll_wait_fields[] = lttng_ ) #define LTTNG_SYSCALL_EPOLL_WAIT_code_pre \ - BUILD_BUG_ON(((ARRAY_SIZE(lttng_epoll_ctl_events_fields) - 1) + \ - EPOLL_FLAGS_PADDING_SIZE) != \ - sizeof(uint8_t) * BITS_PER_BYTE); \ sc_out({ \ int err; \ unsigned long maxalloc; \ @@ -882,7 +921,7 @@ static const struct lttng_kernel_event_field *lttng_epoll_wait_fields[] = lttng_ ctf_custom_field( \ ctf_custom_type( \ lttng_kernel_static_type_sequence("fds_length", \ - lttng_kernel_static_type_struct(ARRAY_SIZE(lttng_epoll_wait_fields), lttng_epoll_wait_fields, 0), \ + (const struct lttng_kernel_type_common *) <tng_epoll_wait_fields_struct, \ 0, \ none) \ ), \ @@ -986,6 +1025,7 @@ SC_LTTNG_TRACEPOINT_EVENT(socketpair, ) #endif /* (defined(CONFIG_X86_64) && !defined(LTTNG_SC_COMPAT)) || defined(CONFIG_ARM64) || defined(CONFIG_ARM) */ +#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM /* * Enumeration of the open flags, as described in the 'open' * system call man page. @@ -1067,5 +1107,6 @@ SC_LTTNG_TRACEPOINT_EVENT(open, sc_in(ctf_enum(lttng_file_mode, umode_t, mode, mode)) ) ) +#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */ #endif /* CREATE_SYSCALL_TABLE */