Messages in this thread Patch in this message | | | From | Frederic Weisbecker <> | Subject | [RFC PATCH 10/10] ftrace: Factorize search and insertion in the function hashlist | Date | Fri, 22 Jan 2010 02:16:22 +0100 |
| |
Factorize search and insertion operations in the function hashlist to remove some redundant code.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Li Zefan <lizf@cn.fujitsu.com> Cc: Lai Jiangshan <laijs@cn.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
| |