Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+4 −27
Original line number Diff line number Diff line
@@ -99,37 +99,16 @@ struct perf_event_attr;
#define __SC_TEST6(t6, a6, ...)	__SC_TEST(t6); __SC_TEST5(__VA_ARGS__)

#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)				       \
	.profile_count = ATOMIC_INIT(-1),				       \
	.profile_enable = prof_sysenter_enable_##sname,			       \
	.profile_disable = prof_sysenter_disable_##sname,
	.profile_enable = prof_sysenter_enable,				       \
	.profile_disable = prof_sysenter_disable,

#define TRACE_SYS_EXIT_PROFILE_INIT(sname)				       \
	.profile_count = ATOMIC_INIT(-1),				       \
	.profile_enable = prof_sysexit_enable_##sname,			       \
	.profile_disable = prof_sysexit_disable_##sname,
	.profile_enable = prof_sysexit_enable,				       \
	.profile_disable = prof_sysexit_disable,
#else
#define TRACE_SYS_ENTER_PROFILE(sname)
#define TRACE_SYS_ENTER_PROFILE_INIT(sname)
@@ -158,7 +137,6 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *unused) \
	struct trace_event enter_syscall_print_##sname = {		\
		.trace                  = print_syscall_enter,		\
	};								\
	TRACE_SYS_ENTER_PROFILE(sname);					\
	static struct ftrace_event_call __used				\
	  __attribute__((__aligned__(4)))				\
	  __attribute__((section("_ftrace_events")))			\
@@ -181,7 +159,6 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *unused) \
	struct trace_event exit_syscall_print_##sname = {		\
		.trace                  = print_syscall_exit,		\
	};								\
	TRACE_SYS_EXIT_PROFILE(sname);					\
	static struct ftrace_event_call __used				\
	  __attribute__((__aligned__(4)))				\
	  __attribute__((section("_ftrace_events")))			\
+4 −4
Original line number Diff line number Diff line
@@ -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);
#endif
#ifdef CONFIG_EVENT_PROFILE
int reg_prof_syscall_enter(char *name);
void unreg_prof_syscall_enter(char *name);
int reg_prof_syscall_exit(char *name);
void unreg_prof_syscall_exit(char *name);
int prof_sysenter_enable(struct ftrace_event_call *call);
void prof_sysenter_disable(struct ftrace_event_call *call);
int prof_sysexit_enable(struct ftrace_event_call *call);
void prof_sysexit_disable(struct ftrace_event_call *call);

#endif

+8 −16
Original line number Diff line number Diff line
@@ -520,14 +520,12 @@ static void prof_syscall_enter(struct pt_regs *regs, long id)
	local_irq_restore(flags);
}

int reg_prof_syscall_enter(char *name)
int prof_sysenter_enable(struct ftrace_event_call *call)
{
	int ret = 0;
	int num;

	num = syscall_name_to_nr(name);
	if (num < 0 || num >= NR_syscalls)
		return -ENOSYS;
	num = ((struct syscall_metadata *)call->data)->syscall_nr;

	mutex_lock(&syscall_trace_lock);
	if (!sys_prof_refcount_enter)
@@ -543,13 +541,11 @@ int reg_prof_syscall_enter(char *name)
	return ret;
}

void unreg_prof_syscall_enter(char *name)
void prof_sysenter_disable(struct ftrace_event_call *call)
{
	int num;

	num = syscall_name_to_nr(name);
	if (num < 0 || num >= NR_syscalls)
		return;
	num = ((struct syscall_metadata *)call->data)->syscall_nr;

	mutex_lock(&syscall_trace_lock);
	sys_prof_refcount_enter--;
@@ -625,14 +621,12 @@ static void prof_syscall_exit(struct pt_regs *regs, long ret)
	local_irq_restore(flags);
}

int reg_prof_syscall_exit(char *name)
int prof_sysexit_enable(struct ftrace_event_call *call)
{
	int ret = 0;
	int num;

	num = syscall_name_to_nr(name);
	if (num < 0 || num >= NR_syscalls)
		return -ENOSYS;
	num = ((struct syscall_metadata *)call->data)->syscall_nr;

	mutex_lock(&syscall_trace_lock);
	if (!sys_prof_refcount_exit)
@@ -648,13 +642,11 @@ int reg_prof_syscall_exit(char *name)
	return ret;
}

void unreg_prof_syscall_exit(char *name)
void prof_sysexit_disable(struct ftrace_event_call *call)
{
	int num;

	num = syscall_name_to_nr(name);
	if (num < 0 || num >= NR_syscalls)
		return;
	num = ((struct syscall_metadata *)call->data)->syscall_nr;

	mutex_lock(&syscall_trace_lock);
	sys_prof_refcount_exit--;