Messages in this thread Patch in this message | | | From | Łukasz Bartosik <> | Subject | [PATCH v1 05/12] tracefs: add TP_printk_no_nl - RFC | Date | Fri, 3 Nov 2023 14:10:04 +0100 |
| |
From: Jim Cromie <jim.cromie@gmail.com>
This variant of TP_printk() does *not* add the trailing newline. It is for use by printk/debug-ish events which already have a trailing newline. Its here to support:
https://lore.kernel.org/lkml/ 20200825153338.17061-1-vincent.whitchurch@axis.com/ which taught dyndbg to send pr_debug() msgs to tracefs, via -x/T flag.
It "reused" the include/trace/events/printk.h console event, which does the following:
TP_fast_assign( /* * Each trace entry is printed in a new line. * If the msg finishes with '\n', cut it off * to avoid blank lines in the trace. */ if ((len > 0) && (text[len-1] == '\n')) len -= 1;
memcpy(__get_str(msg), text, len); __get_str(msg)[len] = 0; ),
That trim work could be avoided, *iff* all pr_debug() callers are known to have no '\n' to strip. While thats not true for *all* callsites, it is 99+% true for DRM.debug callsites, and can be made true for some subsets of prdbg/dyndbg callsites.
WANTED: macros to validate that a literal format-str has or doesn't have a trailing newline, or to provide or trim trailing newline(s?). Should be usable in TP_printk* defns, for use in new event defns.
Cc: <rostedt@goodmis.org> Cc: Vincent Whitchurch <vincent.whitchurch@axis.com> Cc: <daniel@ffwll.ch> Cc: <pmladek@suse.com> Cc: <sergey.senozhatsky@gmail.com> Cc: <john.ogness@linutronix.de> Cc: Simon Ser <contact@emersion.fr> Cc: Sean Paul <seanpaul@chromium.org> Signed-off-by: Jim Cromie <jim.cromie@gmail.com> --- include/trace/stages/stage3_trace_output.h | 3 +++ include/trace/stages/stage7_class_define.h | 3 +++ 2 files changed, 6 insertions(+)
diff --git a/include/trace/stages/stage3_trace_output.h b/include/trace/stages/stage3_trace_output.h index c1fb1355d309..5f5c1374fa10 100644 --- a/include/trace/stages/stage3_trace_output.h +++ b/include/trace/stages/stage3_trace_output.h @@ -8,6 +8,9 @@ #undef TP_printk #define TP_printk(fmt, args...) fmt "\n", args +#undef TP_printk_no_nl +#define TP_printk_no_nl(fmt, args...) fmt, args + #undef __get_dynamic_array #define __get_dynamic_array(field) \ ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) diff --git a/include/trace/stages/stage7_class_define.h b/include/trace/stages/stage7_class_define.h index bcb960d16fc0..8247e4478f19 100644 --- a/include/trace/stages/stage7_class_define.h +++ b/include/trace/stages/stage7_class_define.h @@ -37,3 +37,6 @@ #undef TP_printk #define TP_printk(fmt, args...) "\"" fmt "\", " __stringify(args) + +#undef TP_printk_no_nl +#define TP_printk_no_nl(fmt, args...) "\"" fmt "\", " __stringify(args) -- 2.42.0.869.gea05f2083d-goog
| |