Re: [PATCH v3 2/3] tracing: Add trace_irqsoff tracepoints

From: Daniel Wagner
Date: Tue Aug 30 2016 - 10:21:05 EST


On 08/30/2016 04:01 PM, Daniel Wagner wrote:
> diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
> index 03c0a48..ab8958f 100644
> --- a/kernel/trace/trace_events.c
> +++ b/kernel/trace/trace_events.c
> @@ -152,7 +152,8 @@ EXPORT_SYMBOL_GPL(trace_define_field);
>
> #define __generic_field(type, item, filter_type) \
> ret = __trace_define_field(&ftrace_generic_fields, #type, \
> - #item, 0, 0, is_signed_type(type), \
> + #item, 0, sizeof(type), \
> + is_signed_type(type), \
> filter_type); \
> if (ret) \
> return ret;
>
>
> After that I get this funky report (with only 4 cpus):

Just setting the size of the type is not enough. The hist_field_*
getter function want to know the offset too:


#define DEFINE_HIST_FIELD_FN(type) \
static u64 hist_field_##type(struct hist_field *hist_field, void *event)\
{ \
type *addr = (type *)(event + hist_field->field->offset); \
\
return (u64)(unsigned long)*addr; \
}

The problem we have here is that there is no cpu field in the event
record.