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.

Reply via email to