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), \
if (ret) \ return ret;is_signed_type(type), \ filter_type); \
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.