Message ID | 1671181385-5719-1-git-send-email-quic_linyyuan@quicinc.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | BPF |
Headers | show |
Series | [v4,1/2] trace: add new file under include/trace/stages/ for perf/bpf | expand |
On Fri, 16 Dec 2022 17:03:04 +0800 Linyu Yuan <quic_linyyuan@quicinc.com> wrote: > when experiment change for trace operation, the files under > include/trace/stages/ will be changed, perf/bpf trace may compile fail. Sorry for the late reply, I was expecting some feedback from the perf and/or BPF folks. > > add new file stage8_perf_call.h and stage9_bpf_call.h under > include/trace/stages/, it will make sure no missing change when expriment. > Actually, these are not part of the stage sequence. In fact they could possibly be replaced *with* the stage sequences (which I think I'll apply): For example: diff --git a/include/trace/bpf_probe.h b/include/trace/bpf_probe.h index 155c495b89ea..1f7fc1fc590c 100644 --- a/include/trace/bpf_probe.h +++ b/include/trace/bpf_probe.h @@ -4,50 +4,7 @@ #ifdef CONFIG_BPF_EVENTS -#undef __entry -#define __entry entry - -#undef __get_dynamic_array -#define __get_dynamic_array(field) \ - ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) - -#undef __get_dynamic_array_len -#define __get_dynamic_array_len(field) \ - ((__entry->__data_loc_##field >> 16) & 0xffff) - -#undef __get_str -#define __get_str(field) ((char *)__get_dynamic_array(field)) - -#undef __get_bitmask -#define __get_bitmask(field) (char *)__get_dynamic_array(field) - -#undef __get_cpumask -#define __get_cpumask(field) (char *)__get_dynamic_array(field) - -#undef __get_sockaddr -#define __get_sockaddr(field) ((struct sockaddr *)__get_dynamic_array(field)) - -#undef __get_rel_dynamic_array -#define __get_rel_dynamic_array(field) \ - ((void *)(&__entry->__rel_loc_##field) + \ - sizeof(__entry->__rel_loc_##field) + \ - (__entry->__rel_loc_##field & 0xffff)) - -#undef __get_rel_dynamic_array_len -#define __get_rel_dynamic_array_len(field) \ - ((__entry->__rel_loc_##field >> 16) & 0xffff) - -#undef __get_rel_str -#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field)) - -#undef __get_rel_bitmask -#define __get_rel_bitmask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_cpumask -#define __get_rel_cpumask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_sockaddr -#define __get_rel_sockaddr(field) ((struct sockaddr *)__get_rel_dynamic_array(field)) +#include "stages/stage6_event_callback.h" #undef __perf_count #define __perf_count(c) (c) diff --git a/include/trace/perf.h b/include/trace/perf.h index 8f3bf1e17707..2c11181c82e0 100644 --- a/include/trace/perf.h +++ b/include/trace/perf.h @@ -4,51 +4,7 @@ #ifdef CONFIG_PERF_EVENTS -#undef __entry -#define __entry entry - -#undef __get_dynamic_array -#define __get_dynamic_array(field) \ - ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) - -#undef __get_dynamic_array_len -#define __get_dynamic_array_len(field) \ - ((__entry->__data_loc_##field >> 16) & 0xffff) - -#undef __get_str -#define __get_str(field) ((char *)__get_dynamic_array(field)) - -#undef __get_bitmask -#define __get_bitmask(field) (char *)__get_dynamic_array(field) - -#undef __get_cpumask -#define __get_cpumask(field) (char *)__get_dynamic_array(field) - -#undef __get_sockaddr -#define __get_sockaddr(field) ((struct sockaddr *)__get_dynamic_array(field)) - -#undef __get_rel_dynamic_array -#define __get_rel_dynamic_array(field) \ - ((void *)__entry + \ - offsetof(typeof(*__entry), __rel_loc_##field) + \ - sizeof(__entry->__rel_loc_##field) + \ - (__entry->__rel_loc_##field & 0xffff)) - -#undef __get_rel_dynamic_array_len -#define __get_rel_dynamic_array_len(field) \ - ((__entry->__rel_loc_##field >> 16) & 0xffff) - -#undef __get_rel_str -#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field)) - -#undef __get_rel_bitmask -#define __get_rel_bitmask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_cpumask -#define __get_rel_cpumask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_sockaddr -#define __get_rel_sockaddr(field) ((struct sockaddr *)__get_rel_dynamic_array(field)) +#include "stages/stage6_event_callback.h" #undef __perf_count #define __perf_count(c) (__count = (c)) diff --git a/include/trace/stages/stage6_event_callback.h b/include/trace/stages/stage6_event_callback.h index 49c32394b53f..919b1a4da980 100644 --- a/include/trace/stages/stage6_event_callback.h +++ b/include/trace/stages/stage6_event_callback.h @@ -2,6 +2,9 @@ /* Stage 6 definitions for creating trace events */ +/* Reuse some of the stage 3 macros */ +#include "stage3_trace_output.h" + #undef __entry #define __entry entry
On 1/25/2023 3:46 AM, Steven Rostedt wrote: > On Fri, 16 Dec 2022 17:03:04 +0800 > Linyu Yuan <quic_linyyuan@quicinc.com> wrote: > >> when experiment change for trace operation, the files under >> include/trace/stages/ will be changed, perf/bpf trace may compile fail. > Sorry for the late reply, I was expecting some feedback from the perf > and/or BPF folks. > >> add new file stage8_perf_call.h and stage9_bpf_call.h under >> include/trace/stages/, it will make sure no missing change when expriment. >> > Actually, these are not part of the stage sequence. In fact they could thanks for explanation. > possibly be replaced *with* the stage sequences (which I think I'll apply): > > For example: > > diff --git a/include/trace/bpf_probe.h b/include/trace/bpf_probe.h > index 155c495b89ea..1f7fc1fc590c 100644 > --- a/include/trace/bpf_probe.h > +++ b/include/trace/bpf_probe.h > @@ -4,50 +4,7 @@ > > #ifdef CONFIG_BPF_EVENTS > > -#undef __entry > -#define __entry entry > - > -#undef __get_dynamic_array > -#define __get_dynamic_array(field) \ > - ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) > - > -#undef __get_dynamic_array_len > -#define __get_dynamic_array_len(field) \ > - ((__entry->__data_loc_##field >> 16) & 0xffff) > - > -#undef __get_str > -#define __get_str(field) ((char *)__get_dynamic_array(field)) > - > -#undef __get_bitmask > -#define __get_bitmask(field) (char *)__get_dynamic_array(field) > - > -#undef __get_cpumask > -#define __get_cpumask(field) (char *)__get_dynamic_array(field) > - > -#undef __get_sockaddr > -#define __get_sockaddr(field) ((struct sockaddr *)__get_dynamic_array(field)) > - > -#undef __get_rel_dynamic_array > -#define __get_rel_dynamic_array(field) \ > - ((void *)(&__entry->__rel_loc_##field) + \ > - sizeof(__entry->__rel_loc_##field) + \ > - (__entry->__rel_loc_##field & 0xffff)) > - > -#undef __get_rel_dynamic_array_len > -#define __get_rel_dynamic_array_len(field) \ > - ((__entry->__rel_loc_##field >> 16) & 0xffff) > - > -#undef __get_rel_str > -#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field)) > - > -#undef __get_rel_bitmask > -#define __get_rel_bitmask(field) (char *)__get_rel_dynamic_array(field) > - > -#undef __get_rel_cpumask > -#define __get_rel_cpumask(field) (char *)__get_rel_dynamic_array(field) > - > -#undef __get_rel_sockaddr > -#define __get_rel_sockaddr(field) ((struct sockaddr *)__get_rel_dynamic_array(field)) > +#include "stages/stage6_event_callback.h" > > #undef __perf_count > #define __perf_count(c) (c) > diff --git a/include/trace/perf.h b/include/trace/perf.h > index 8f3bf1e17707..2c11181c82e0 100644 > --- a/include/trace/perf.h > +++ b/include/trace/perf.h > @@ -4,51 +4,7 @@ > > #ifdef CONFIG_PERF_EVENTS > > -#undef __entry > -#define __entry entry > - > -#undef __get_dynamic_array > -#define __get_dynamic_array(field) \ > - ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) > - > -#undef __get_dynamic_array_len > -#define __get_dynamic_array_len(field) \ > - ((__entry->__data_loc_##field >> 16) & 0xffff) > - > -#undef __get_str > -#define __get_str(field) ((char *)__get_dynamic_array(field)) > - > -#undef __get_bitmask > -#define __get_bitmask(field) (char *)__get_dynamic_array(field) > - > -#undef __get_cpumask > -#define __get_cpumask(field) (char *)__get_dynamic_array(field) > - > -#undef __get_sockaddr > -#define __get_sockaddr(field) ((struct sockaddr *)__get_dynamic_array(field)) > - > -#undef __get_rel_dynamic_array > -#define __get_rel_dynamic_array(field) \ > - ((void *)__entry + \ > - offsetof(typeof(*__entry), __rel_loc_##field) + \ > - sizeof(__entry->__rel_loc_##field) + \ > - (__entry->__rel_loc_##field & 0xffff)) > - > -#undef __get_rel_dynamic_array_len > -#define __get_rel_dynamic_array_len(field) \ > - ((__entry->__rel_loc_##field >> 16) & 0xffff) > - > -#undef __get_rel_str > -#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field)) > - > -#undef __get_rel_bitmask > -#define __get_rel_bitmask(field) (char *)__get_rel_dynamic_array(field) > - > -#undef __get_rel_cpumask > -#define __get_rel_cpumask(field) (char *)__get_rel_dynamic_array(field) > - > -#undef __get_rel_sockaddr > -#define __get_rel_sockaddr(field) ((struct sockaddr *)__get_rel_dynamic_array(field)) > +#include "stages/stage6_event_callback.h" > > #undef __perf_count > #define __perf_count(c) (__count = (c)) > diff --git a/include/trace/stages/stage6_event_callback.h b/include/trace/stages/stage6_event_callback.h > index 49c32394b53f..919b1a4da980 100644 > --- a/include/trace/stages/stage6_event_callback.h > +++ b/include/trace/stages/stage6_event_callback.h > @@ -2,6 +2,9 @@ > > /* Stage 6 definitions for creating trace events */ > > +/* Reuse some of the stage 3 macros */ > +#include "stage3_trace_output.h" > + > #undef __entry > #define __entry entry >
diff --git a/include/trace/bpf_probe.h b/include/trace/bpf_probe.h index 155c495..dfa39f5 100644 --- a/include/trace/bpf_probe.h +++ b/include/trace/bpf_probe.h @@ -4,56 +4,7 @@ #ifdef CONFIG_BPF_EVENTS -#undef __entry -#define __entry entry - -#undef __get_dynamic_array -#define __get_dynamic_array(field) \ - ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) - -#undef __get_dynamic_array_len -#define __get_dynamic_array_len(field) \ - ((__entry->__data_loc_##field >> 16) & 0xffff) - -#undef __get_str -#define __get_str(field) ((char *)__get_dynamic_array(field)) - -#undef __get_bitmask -#define __get_bitmask(field) (char *)__get_dynamic_array(field) - -#undef __get_cpumask -#define __get_cpumask(field) (char *)__get_dynamic_array(field) - -#undef __get_sockaddr -#define __get_sockaddr(field) ((struct sockaddr *)__get_dynamic_array(field)) - -#undef __get_rel_dynamic_array -#define __get_rel_dynamic_array(field) \ - ((void *)(&__entry->__rel_loc_##field) + \ - sizeof(__entry->__rel_loc_##field) + \ - (__entry->__rel_loc_##field & 0xffff)) - -#undef __get_rel_dynamic_array_len -#define __get_rel_dynamic_array_len(field) \ - ((__entry->__rel_loc_##field >> 16) & 0xffff) - -#undef __get_rel_str -#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field)) - -#undef __get_rel_bitmask -#define __get_rel_bitmask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_cpumask -#define __get_rel_cpumask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_sockaddr -#define __get_rel_sockaddr(field) ((struct sockaddr *)__get_rel_dynamic_array(field)) - -#undef __perf_count -#define __perf_count(c) (c) - -#undef __perf_task -#define __perf_task(t) (t) +#include "stages/stage9_bpf_call.h" /* cast any integer, pointer, or small struct to u64 */ #define UINTTYPE(size) \ diff --git a/include/trace/perf.h b/include/trace/perf.h index 8f3bf1e..57e1661 100644 --- a/include/trace/perf.h +++ b/include/trace/perf.h @@ -4,57 +4,7 @@ #ifdef CONFIG_PERF_EVENTS -#undef __entry -#define __entry entry - -#undef __get_dynamic_array -#define __get_dynamic_array(field) \ - ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) - -#undef __get_dynamic_array_len -#define __get_dynamic_array_len(field) \ - ((__entry->__data_loc_##field >> 16) & 0xffff) - -#undef __get_str -#define __get_str(field) ((char *)__get_dynamic_array(field)) - -#undef __get_bitmask -#define __get_bitmask(field) (char *)__get_dynamic_array(field) - -#undef __get_cpumask -#define __get_cpumask(field) (char *)__get_dynamic_array(field) - -#undef __get_sockaddr -#define __get_sockaddr(field) ((struct sockaddr *)__get_dynamic_array(field)) - -#undef __get_rel_dynamic_array -#define __get_rel_dynamic_array(field) \ - ((void *)__entry + \ - offsetof(typeof(*__entry), __rel_loc_##field) + \ - sizeof(__entry->__rel_loc_##field) + \ - (__entry->__rel_loc_##field & 0xffff)) - -#undef __get_rel_dynamic_array_len -#define __get_rel_dynamic_array_len(field) \ - ((__entry->__rel_loc_##field >> 16) & 0xffff) - -#undef __get_rel_str -#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field)) - -#undef __get_rel_bitmask -#define __get_rel_bitmask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_cpumask -#define __get_rel_cpumask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_sockaddr -#define __get_rel_sockaddr(field) ((struct sockaddr *)__get_rel_dynamic_array(field)) - -#undef __perf_count -#define __perf_count(c) (__count = (c)) - -#undef __perf_task -#define __perf_task(t) (__task = (t)) +#include "stages/stage8_perf_call.h" #undef DECLARE_EVENT_CLASS #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \ diff --git a/include/trace/stages/stage8_perf_call.h b/include/trace/stages/stage8_perf_call.h new file mode 100644 index 0000000..54c8045 --- /dev/null +++ b/include/trace/stages/stage8_perf_call.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#undef __entry +#define __entry entry + +#undef __get_dynamic_array +#define __get_dynamic_array(field) \ + ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) + +#undef __get_dynamic_array_len +#define __get_dynamic_array_len(field) \ + ((__entry->__data_loc_##field >> 16) & 0xffff) + +#undef __get_str +#define __get_str(field) ((char *)__get_dynamic_array(field)) + +#undef __get_bitmask +#define __get_bitmask(field) ((char *)__get_dynamic_array(field)) + +#undef __get_cpumask +#define __get_cpumask(field) ((char *)__get_dynamic_array(field)) + +#undef __get_sockaddr +#define __get_sockaddr(field) ((struct sockaddr *)__get_dynamic_array(field)) + +#undef __get_rel_dynamic_array +#define __get_rel_dynamic_array(field) \ + ((void *)__entry + \ + offsetof(typeof(*__entry), __rel_loc_##field) + \ + sizeof(__entry->__rel_loc_##field) + \ + (__entry->__rel_loc_##field & 0xffff)) + +#undef __get_rel_dynamic_array_len +#define __get_rel_dynamic_array_len(field) \ + ((__entry->__rel_loc_##field >> 16) & 0xffff) + +#undef __get_rel_str +#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field)) + +#undef __get_rel_bitmask +#define __get_rel_bitmask(field) ((char *)__get_rel_dynamic_array(field)) + +#undef __get_rel_cpumask +#define __get_rel_cpumask(field) ((char *)__get_rel_dynamic_array(field)) + +#undef __get_rel_sockaddr +#define __get_rel_sockaddr(field) ((struct sockaddr *)__get_rel_dynamic_array(field)) + +#undef __perf_count +#define __perf_count(c) (__count = (c)) + +#undef __perf_task +#define __perf_task(t) (__task = (t)) diff --git a/include/trace/stages/stage9_bpf_call.h b/include/trace/stages/stage9_bpf_call.h new file mode 100644 index 0000000..6dbcbdf --- /dev/null +++ b/include/trace/stages/stage9_bpf_call.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#undef __entry +#define __entry entry + +#undef __get_dynamic_array +#define __get_dynamic_array(field) \ + ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) + +#undef __get_dynamic_array_len +#define __get_dynamic_array_len(field) \ + ((__entry->__data_loc_##field >> 16) & 0xffff) + +#undef __get_str +#define __get_str(field) ((char *)__get_dynamic_array(field)) + +#undef __get_bitmask +#define __get_bitmask(field) ((char *)__get_dynamic_array(field)) + +#undef __get_cpumask +#define __get_cpumask(field) ((char *)__get_dynamic_array(field)) + +#undef __get_sockaddr +#define __get_sockaddr(field) ((struct sockaddr *)__get_dynamic_array(field)) + +#undef __get_rel_dynamic_array +#define __get_rel_dynamic_array(field) \ + ((void *)(&__entry->__rel_loc_##field) + \ + sizeof(__entry->__rel_loc_##field) + \ + (__entry->__rel_loc_##field & 0xffff)) + +#undef __get_rel_dynamic_array_len +#define __get_rel_dynamic_array_len(field) \ + ((__entry->__rel_loc_##field >> 16) & 0xffff) + +#undef __get_rel_str +#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field)) + +#undef __get_rel_bitmask +#define __get_rel_bitmask(field) ((char *)__get_rel_dynamic_array(field)) + +#undef __get_rel_cpumask +#define __get_rel_cpumask(field) ((char *)__get_rel_dynamic_array(field)) + +#undef __get_rel_sockaddr +#define __get_rel_sockaddr(field) ((struct sockaddr *)__get_rel_dynamic_array(field)) + +#undef __perf_count +#define __perf_count(c) (c) + +#undef __perf_task +#define __perf_task(t) (t)
when experiment change for trace operation, the files under include/trace/stages/ will be changed, perf/bpf trace may compile fail. add new file stage8_perf_call.h and stage9_bpf_call.h under include/trace/stages/, it will make sure no missing change when expriment. Signed-off-by: Linyu Yuan <quic_linyyuan@quicinc.com> --- v4: fix build isse due to file rename v3: consider perf as stage 8, bpf as stage 9, file name purpose only. v2: not exist include/trace/bpf_probe.h | 51 +------------------------------ include/trace/perf.h | 52 +------------------------------- include/trace/stages/stage8_perf_call.h | 53 +++++++++++++++++++++++++++++++++ include/trace/stages/stage9_bpf_call.h | 52 ++++++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 101 deletions(-) create mode 100644 include/trace/stages/stage8_perf_call.h create mode 100644 include/trace/stages/stage9_bpf_call.h