[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1264122982-1553-11-git-send-regression-fweisbec@gmail.com>
Date: Fri, 22 Jan 2010 02:16:22 +0100
From: Frederic Weisbecker <fweisbec@...il.com>
To: Ingo Molnar <mingo@...e.hu>
Cc: LKML <linux-kernel@...r.kernel.org>,
Frederic Weisbecker <fweisbec@...il.com>,
Steven Rostedt <rostedt@...dmis.org>,
Li Zefan <lizf@...fujitsu.com>,
Lai Jiangshan <laijs@...fujitsu.com>
Subject: [RFC PATCH 10/10] ftrace: Factorize search and insertion in the function hashlist
Factorize search and insertion operations in the function hashlist
to remove some redundant code.
Signed-off-by: Frederic Weisbecker <fweisbec@...il.com>
Cc: Steven Rostedt <rostedt@...dmis.org>
Cc: Li Zefan <lizf@...fujitsu.com>
Cc: Lai Jiangshan <laijs@...fujitsu.com>
---
kernel/trace/ftrace.c | 18 ++++++------------
kernel/trace/functions_hlist.h | 12 ++++++++++++
kernel/trace/trace_functions_graph.c | 17 +++++++----------
3 files changed, 25 insertions(+), 22 deletions(-)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index d719078..785d077 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -385,12 +385,9 @@ function_profile_call(unsigned long ip, unsigned long parent_ip)
hlist = &__get_cpu_var(func_hlist_cpu);
- rec = function_find_hlist_node(hlist, ip);
- if (!rec) {
- rec = function_hlist_record_alloc(hlist, ip);
- if (!rec)
- goto out;
- }
+ rec = function_get_hlist_node(hlist, ip);
+ if (!rec)
+ goto out;
rec->counter++;
out:
@@ -2198,12 +2195,9 @@ change_graph_function_hlist(unsigned long ip, int val, struct func_hlist *hlist)
{
struct func_node *rec;
- rec = function_find_hlist_node(hlist, ip);
- if (!rec) {
- rec = function_hlist_record_alloc(hlist, ip);
- if (!rec)
- return 1;
- }
+ rec = function_get_hlist_node(hlist, ip);
+ if (!rec)
+ return 1;
rec->graph_start = val;
diff --git a/kernel/trace/functions_hlist.h b/kernel/trace/functions_hlist.h
index 39d89b4..3baf4bb 100644
--- a/kernel/trace/functions_hlist.h
+++ b/kernel/trace/functions_hlist.h
@@ -40,3 +40,15 @@ int get_function_hlist(void);
void put_function_hlist(void);
void function_hlist_reset_profile(void);
void function_hlist_reset_graph(void);
+
+static inline struct func_node *
+function_get_hlist_node(struct func_hlist *hlist, unsigned long ip)
+{
+ struct func_node *rec;
+
+ rec = function_find_hlist_node(hlist, ip);
+ if (!rec)
+ rec = function_hlist_record_alloc(hlist, ip);
+
+ return rec;
+}
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
index da24add..0fa0691 100644
--- a/kernel/trace/trace_functions_graph.c
+++ b/kernel/trace/trace_functions_graph.c
@@ -213,16 +213,13 @@ static inline int ftrace_graph_addr(unsigned long addr)
hlist = &__get_cpu_var(func_hlist_cpu);
- rec = function_find_hlist_node(hlist, addr);
- if (!rec) {
- /*
- * TODO: send a retrieval error event
- * to keep track of this.
- */
- rec = function_hlist_record_alloc(hlist, addr);
- if (!rec)
- return 0;
- }
+ /*
+ * TODO: send a retrieval error event
+ * to keep track of failures
+ */
+ rec = function_get_hlist_node(hlist, addr);
+ if (!rec)
+ return 0;
if (rec->graph_start)
return 1;
--
1.6.2.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists