Messages in this thread Patch in this message | | | From | Andi Kleen <> | Subject | [PATCH 1/7] trace: Move trace_seq_overflowed out of line | Date | Tue, 14 Mar 2017 19:14:25 -0700 |
| |
From: Andi Kleen <ak@linux.intel.com>
Inlining trace_seq_overflowed takes ~17k in text size in my kernel. The function doesn't seem to be time critical, so we can just out of line it.
Function Total Avg Num trace_seq_has_overflowed 17134 (0.00%) 33 514
This saves around 6k here
text data bss dec hex filename 9102881 5367568 11116544 25586993 1866d31 vmlinux-orig 9096494 5367568 11116544 25580606 186543e vmlinux-trace-seq
Cc: rostedt@goodmis.org Signed-off-by: Andi Kleen <ak@linux.intel.com> --- include/linux/trace_seq.h | 12 +----------- kernel/trace/trace_seq.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/include/linux/trace_seq.h b/include/linux/trace_seq.h index cfaf5a1d4bad..442e4f087b95 100644 --- a/include/linux/trace_seq.h +++ b/include/linux/trace_seq.h @@ -56,17 +56,7 @@ trace_seq_buffer_ptr(struct trace_seq *s) return s->buffer + seq_buf_used(&s->seq); } -/** - * trace_seq_has_overflowed - return true if the trace_seq took too much - * @s: trace sequence descriptor - * - * Returns true if too much data was added to the trace_seq and it is - * now full and will not take anymore. - */ -static inline bool trace_seq_has_overflowed(struct trace_seq *s) -{ - return s->full || seq_buf_has_overflowed(&s->seq); -} +bool trace_seq_has_overflowed(struct trace_seq *s); /* * Currently only defined when tracing is enabled. diff --git a/kernel/trace/trace_seq.c b/kernel/trace/trace_seq.c index e694c9f9efa4..4367cd43e38c 100644 --- a/kernel/trace/trace_seq.c +++ b/kernel/trace/trace_seq.c @@ -375,3 +375,18 @@ int trace_seq_to_user(struct trace_seq *s, char __user *ubuf, int cnt) return seq_buf_to_user(&s->seq, ubuf, cnt); } EXPORT_SYMBOL_GPL(trace_seq_to_user); + + + +/** + * trace_seq_has_overflowed - return true if the trace_seq took too much + * @s: trace sequence descriptor + * + * Returns true if too much data was added to the trace_seq and it is + * now full and will not take anymore. + */ +bool trace_seq_has_overflowed(struct trace_seq *s) +{ + return s->full || seq_buf_has_overflowed(&s->seq); +} +EXPORT_SYMBOL_GPL(trace_seq_has_overflowed); -- 2.9.3
| |