Hi Beau, On Tue, 11 Jan 2022 09:25:51 -0800 Beau Belgrave <beaub@xxxxxxxxxxxxxxxxxxx> wrote: > +static int user_event_show(struct seq_file *m, struct dyn_event *ev) > +{ > + struct user_event *user = container_of(ev, struct user_event, devent); > + struct ftrace_event_field *field, *next; > + struct list_head *head; > + int depth = 0; > + > + seq_printf(m, "%s%s", USER_EVENTS_PREFIX, EVENT_NAME(user)); > + > + head = trace_get_fields(&user->call); > + > + list_for_each_entry_safe_reverse(field, next, head, link) { > + if (depth == 0) > + seq_puts(m, " "); > + else > + seq_puts(m, "; "); > + seq_printf(m, "%s %s", field->type, field->name); > + depth++; > + } > + > + seq_puts(m, "\n"); > + > + return 0; > +} Let me confirm just one point. Your syntax supports [__data_loc|__rel_loc] [unsigned] TYPE[\[LEN\]] NAME or struct TYPE NAME SIZE for the fields, right? In that case, above seq_printf() seems not enough. Thank you, -- Masami Hiramatsu <mhiramat@xxxxxxxxxx>