Commit 3bbe84e9 authored by Lai Jiangshan's avatar Lai Jiangshan Committed by Ingo Molnar

trace_syscalls: Simplify syscall profile

use only one prof_sysenter_enable() instead of
prof_sysenter_enable_##sname()

use only one prof_sysenter_disable() instead of
prof_sysenter_disable_##sname()

use only one prof_sysexit_enable() instead of
prof_sysexit_enable_##sname()

use only one prof_sysexit_disable() instead of
prof_sysexit_disable_##sname()
Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
Acked-by: default avatarJason Baron <jbaron@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <4B14D2A1.8060304@cn.fujitsu.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent a1301da0
...@@ -99,37 +99,16 @@ struct perf_event_attr; ...@@ -99,37 +99,16 @@ struct perf_event_attr;
#define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__) #define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__)
#ifdef CONFIG_EVENT_PROFILE #ifdef CONFIG_EVENT_PROFILE
#define TRACE_SYS_ENTER_PROFILE(sname) \
static int prof_sysenter_enable_##sname(struct ftrace_event_call *unused) \
{ \
return reg_prof_syscall_enter("sys"#sname); \
} \
\
static void prof_sysenter_disable_##sname(struct ftrace_event_call *unused) \
{ \
unreg_prof_syscall_enter("sys"#sname); \
}
#define TRACE_SYS_EXIT_PROFILE(sname) \
static int prof_sysexit_enable_##sname(struct ftrace_event_call *unused) \
{ \
return reg_prof_syscall_exit("sys"#sname); \
} \
\
static void prof_sysexit_disable_##sname(struct ftrace_event_call *unused) \
{ \
unreg_prof_syscall_exit("sys"#sname); \
}
#define TRACE_SYS_ENTER_PROFILE_INIT(sname) \ #define TRACE_SYS_ENTER_PROFILE_INIT(sname) \
.profile_count = ATOMIC_INIT(-1), \ .profile_count = ATOMIC_INIT(-1), \
.profile_enable = prof_sysenter_enable_##sname, \ .profile_enable = prof_sysenter_enable, \
.profile_disable = prof_sysenter_disable_##sname, .profile_disable = prof_sysenter_disable,
#define TRACE_SYS_EXIT_PROFILE_INIT(sname) \ #define TRACE_SYS_EXIT_PROFILE_INIT(sname) \
.profile_count = ATOMIC_INIT(-1), \ .profile_count = ATOMIC_INIT(-1), \
.profile_enable = prof_sysexit_enable_##sname, \ .profile_enable = prof_sysexit_enable, \
.profile_disable = prof_sysexit_disable_##sname, .profile_disable = prof_sysexit_disable,
#else #else
#define TRACE_SYS_ENTER_PROFILE(sname) #define TRACE_SYS_ENTER_PROFILE(sname)
#define TRACE_SYS_ENTER_PROFILE_INIT(sname) #define TRACE_SYS_ENTER_PROFILE_INIT(sname)
...@@ -158,7 +137,6 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *unused) \ ...@@ -158,7 +137,6 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *unused) \
struct trace_event enter_syscall_print_##sname = { \ struct trace_event enter_syscall_print_##sname = { \
.trace = print_syscall_enter, \ .trace = print_syscall_enter, \
}; \ }; \
TRACE_SYS_ENTER_PROFILE(sname); \
static struct ftrace_event_call __used \ static struct ftrace_event_call __used \
__attribute__((__aligned__(4))) \ __attribute__((__aligned__(4))) \
__attribute__((section("_ftrace_events"))) \ __attribute__((section("_ftrace_events"))) \
...@@ -181,7 +159,6 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *unused) \ ...@@ -181,7 +159,6 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *unused) \
struct trace_event exit_syscall_print_##sname = { \ struct trace_event exit_syscall_print_##sname = { \
.trace = print_syscall_exit, \ .trace = print_syscall_exit, \
}; \ }; \
TRACE_SYS_EXIT_PROFILE(sname); \
static struct ftrace_event_call __used \ static struct ftrace_event_call __used \
__attribute__((__aligned__(4))) \ __attribute__((__aligned__(4))) \
__attribute__((section("_ftrace_events"))) \ __attribute__((section("_ftrace_events"))) \
......
...@@ -50,10 +50,10 @@ enum print_line_t print_syscall_enter(struct trace_iterator *iter, int flags); ...@@ -50,10 +50,10 @@ enum print_line_t print_syscall_enter(struct trace_iterator *iter, int flags);
enum print_line_t print_syscall_exit(struct trace_iterator *iter, int flags); enum print_line_t print_syscall_exit(struct trace_iterator *iter, int flags);
#endif #endif
#ifdef CONFIG_EVENT_PROFILE #ifdef CONFIG_EVENT_PROFILE
int reg_prof_syscall_enter(char *name); int prof_sysenter_enable(struct ftrace_event_call *call);
void unreg_prof_syscall_enter(char *name); void prof_sysenter_disable(struct ftrace_event_call *call);
int reg_prof_syscall_exit(char *name); int prof_sysexit_enable(struct ftrace_event_call *call);
void unreg_prof_syscall_exit(char *name); void prof_sysexit_disable(struct ftrace_event_call *call);
#endif #endif
......
...@@ -520,14 +520,12 @@ end_recursion: ...@@ -520,14 +520,12 @@ end_recursion:
local_irq_restore(flags); local_irq_restore(flags);
} }
int reg_prof_syscall_enter(char *name) int prof_sysenter_enable(struct ftrace_event_call *call)
{ {
int ret = 0; int ret = 0;
int num; int num;
num = syscall_name_to_nr(name); num = ((struct syscall_metadata *)call->data)->syscall_nr;
if (num < 0 || num >= NR_syscalls)
return -ENOSYS;
mutex_lock(&syscall_trace_lock); mutex_lock(&syscall_trace_lock);
if (!sys_prof_refcount_enter) if (!sys_prof_refcount_enter)
...@@ -543,13 +541,11 @@ int reg_prof_syscall_enter(char *name) ...@@ -543,13 +541,11 @@ int reg_prof_syscall_enter(char *name)
return ret; return ret;
} }
void unreg_prof_syscall_enter(char *name) void prof_sysenter_disable(struct ftrace_event_call *call)
{ {
int num; int num;
num = syscall_name_to_nr(name); num = ((struct syscall_metadata *)call->data)->syscall_nr;
if (num < 0 || num >= NR_syscalls)
return;
mutex_lock(&syscall_trace_lock); mutex_lock(&syscall_trace_lock);
sys_prof_refcount_enter--; sys_prof_refcount_enter--;
...@@ -625,14 +621,12 @@ end_recursion: ...@@ -625,14 +621,12 @@ end_recursion:
local_irq_restore(flags); local_irq_restore(flags);
} }
int reg_prof_syscall_exit(char *name) int prof_sysexit_enable(struct ftrace_event_call *call)
{ {
int ret = 0; int ret = 0;
int num; int num;
num = syscall_name_to_nr(name); num = ((struct syscall_metadata *)call->data)->syscall_nr;
if (num < 0 || num >= NR_syscalls)
return -ENOSYS;
mutex_lock(&syscall_trace_lock); mutex_lock(&syscall_trace_lock);
if (!sys_prof_refcount_exit) if (!sys_prof_refcount_exit)
...@@ -648,13 +642,11 @@ int reg_prof_syscall_exit(char *name) ...@@ -648,13 +642,11 @@ int reg_prof_syscall_exit(char *name)
return ret; return ret;
} }
void unreg_prof_syscall_exit(char *name) void prof_sysexit_disable(struct ftrace_event_call *call)
{ {
int num; int num;
num = syscall_name_to_nr(name); num = ((struct syscall_metadata *)call->data)->syscall_nr;
if (num < 0 || num >= NR_syscalls)
return;
mutex_lock(&syscall_trace_lock); mutex_lock(&syscall_trace_lock);
sys_prof_refcount_exit--; sys_prof_refcount_exit--;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment