[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20170315021431.13107-2-andi@firstfloor.org>
Date: Tue, 14 Mar 2017 19:14:25 -0700
From: Andi Kleen <andi@...stfloor.org>
To: akpm@...ux-foundation.org
Cc: linux-kernel@...r.kernel.org, Andi Kleen <ak@...ux.intel.com>,
rostedt@...dmis.org
Subject: [PATCH 1/7] trace: Move trace_seq_overflowed out of line
From: Andi Kleen <ak@...ux.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@...dmis.org
Signed-off-by: Andi Kleen <ak@...ux.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
Powered by blists - more mailing lists