All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Baron <jbaron@redhat.com>
To: Josh Stone <jistone@redhat.com>
Cc: linux-kernel@vger.kernel.org, fweisbec@gmail.com, mingo@elte.hu,
	laijs@cn.fujitsu.com, rostedt@goodmis.org, peterz@infradead.org,
	mathieu.desnoyers@polymtl.ca, jiayingz@google.com,
	mbligh@google.com, lizf@cn.fujitsu.com
Subject: Re: [PATCH] tracing: Create generic syscall TRACE_EVENTs
Date: Wed, 19 Aug 2009 12:16:52 -0400	[thread overview]
Message-ID: <20090819161651.GC2649@redhat.com> (raw)
In-Reply-To: <1250634359-31642-1-git-send-email-jistone@redhat.com>

On Tue, Aug 18, 2009 at 03:25:59PM -0700, Josh Stone wrote:
> This converts the syscall_enter/exit tracepoints into TRACE_EVENTs, so
> you can have generic ftrace events that capture all system calls with
> arguments and return values.
> 
> The existing event_syscall_enter/exit trace_event structs are renamed to
> event_sys_enter/exit, so they don't conflict with the names generated
> automatically by ftrace.
> 
> Signed-off-by: Josh Stone <jistone@redhat.com>
> Cc: Jason Baron <jbaron@redhat.com>
> ---
>  arch/s390/kernel/ptrace.c       |    3 ++
>  arch/x86/kernel/ptrace.c        |    8 ++---
>  include/linux/syscalls.h        |    4 +-
>  include/trace/events/syscalls.h |   66 +++++++++++++++++++++++++++++++++++++++
>  include/trace/syscall.h         |   17 +---------
>  kernel/trace/trace_syscalls.c   |    5 ++-
>  6 files changed, 79 insertions(+), 24 deletions(-)
>  create mode 100644 include/trace/events/syscalls.h
> 
> diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
> index 05f57cd..8730fa7 100644
> --- a/arch/s390/kernel/ptrace.c
> +++ b/arch/s390/kernel/ptrace.c
> @@ -51,6 +51,9 @@
>  #include "compat_ptrace.h"
>  #endif
>  
> +#define CREATE_TRACE_POINTS
> +#include <trace/events/syscalls.h>
> +
>  enum s390_regset {
>  	REGSET_GENERAL,
>  	REGSET_FP,

this will have to be rebased to remove the new s390 DECLARE_TRACE()
calls here like x86.

> diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
> index 692fc14..530ff6f 100644
> --- a/arch/x86/kernel/ptrace.c
> +++ b/arch/x86/kernel/ptrace.c
> @@ -35,13 +35,11 @@
>  #include <asm/proto.h>
>  #include <asm/ds.h>
>  
> -#include <trace/syscall.h>
> -
> -DEFINE_TRACE_WITH_CALLBACK(syscall_enter, syscall_regfunc, syscall_unregfunc);
> -DEFINE_TRACE_WITH_CALLBACK(syscall_exit, syscall_regfunc, syscall_unregfunc);
> -
>  #include "tls.h"
>  
> +#define CREATE_TRACE_POINTS
> +#include <trace/events/syscalls.h>
> +
>  enum x86_regset {
>  	REGSET_GENERAL,
>  	REGSET_FP,
> diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
> index 87d06c1..19b49fd 100644
> --- a/include/linux/syscalls.h
> +++ b/include/linux/syscalls.h
> @@ -187,7 +187,7 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *event_call) \
>  	  event_enter_##sname = {					\
>  		.name                   = "sys_enter"#sname,		\
>  		.system                 = "syscalls",			\
> -		.event                  = &event_syscall_enter,		\
> +		.event                  = &event_sys_enter,		\
>  		.raw_init		= init_enter_##sname,		\
>  		.show_format		= ftrace_format_syscall,	\
>  		.regfunc		= reg_event_syscall_enter,	\
> @@ -223,7 +223,7 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *event_call) \
>  	  event_exit_##sname = {					\
>  		.name                   = "sys_exit"#sname,		\
>  		.system                 = "syscalls",			\
> -		.event                  = &event_syscall_exit,		\
> +		.event                  = &event_sys_exit,		\
>  		.raw_init		= init_exit_##sname,		\
>  		.regfunc		= reg_event_syscall_exit,	\
>  		.unregfunc		= unreg_event_syscall_exit,	\
> diff --git a/include/trace/events/syscalls.h b/include/trace/events/syscalls.h
> new file mode 100644
> index 0000000..75ccc61
> --- /dev/null
> +++ b/include/trace/events/syscalls.h
> @@ -0,0 +1,66 @@
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM syscalls
> +
> +#if !defined(_TRACE_EVENTS_SYSCALL_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_EVENTS_SYSCALL_H
> +
> +#include <linux/tracepoint.h>
> +
> +#include <asm/ptrace.h>
> +#include <asm/syscall.h>
> +
> +extern void syscall_regfunc(void);
> +extern void syscall_unregfunc(void);
> +
> +
> +TRACE_EVENT_WITH_CALLBACK(syscall_enter,
> +

do we want to call this something like, 'syscall_enter_generic'? to make
it more clear this is the high level syscall tracepoint. similar for
exit.

> +	TP_PROTO(struct pt_regs *regs, long id),
> +
> +	TP_ARGS(regs, id),
> +
> +	TP_STRUCT__entry(
> +		__field(	long,	id		)
> +		__array(	long,	args,	6	)
> +	),
> +
> +	TP_fast_assign(
> +		__entry->id	= id;
> +		syscall_get_arguments(current, regs, 0, 6, __entry->args);
> +	),
> +
> +	TP_printk("NR %ld (%ld, %ld, %ld, %ld, %ld, %ld)",
> +		  __entry->id,
> +		  __entry->args[0], __entry->args[1], __entry->args[2],
> +		  __entry->args[3], __entry->args[4], __entry->args[5]),
> +
> +	syscall_regfunc, syscall_unregfunc
> +);
> +
> +TRACE_EVENT_WITH_CALLBACK(syscall_exit,
> +
> +	TP_PROTO(struct pt_regs *regs, long ret),
> +
> +	TP_ARGS(regs, ret),
> +
> +	TP_STRUCT__entry(
> +		__field(	long,	id		)
> +		__field(	long,	ret		)
> +	),
> +
> +	TP_fast_assign(
> +		__entry->id	= syscall_get_nr(current, regs);
> +		__entry->ret	= ret;
> +	),
> +
> +	TP_printk("NR %ld = %ld",
> +		  __entry->id, __entry->ret),
> +
> +	syscall_regfunc, syscall_unregfunc
> +);
> +
> +#endif /* _TRACE_EVENTS_SYSCALL_H */
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>
> +
> diff --git a/include/trace/syscall.h b/include/trace/syscall.h
> index 49e7ec2..5181893 100644
> --- a/include/trace/syscall.h
> +++ b/include/trace/syscall.h
> @@ -8,19 +8,6 @@
>  #include <asm/ptrace.h>
>  
>  
> -extern void syscall_regfunc(void);
> -extern void syscall_unregfunc(void);
> -
> -DECLARE_TRACE(syscall_enter,
> -	TP_PROTO(struct pt_regs *regs, long id),
> -	TP_ARGS(regs, id)
> -);
> -
> -DECLARE_TRACE(syscall_exit,
> -	TP_PROTO(struct pt_regs *regs, long ret),
> -	TP_ARGS(regs, ret)
> -);
> -
>  /*
>   * A syscall entry in the ftrace syscalls array.
>   *
> @@ -45,8 +32,8 @@ extern struct syscall_metadata *syscall_nr_to_meta(int nr);
>  extern int syscall_name_to_nr(char *name);
>  void set_syscall_enter_id(int num, int id);
>  void set_syscall_exit_id(int num, int id);
> -extern struct trace_event event_syscall_enter;
> -extern struct trace_event event_syscall_exit;
> +extern struct trace_event event_sys_enter;
> +extern struct trace_event event_sys_exit;
>  extern int reg_event_syscall_enter(void *ptr);
>  extern void unreg_event_syscall_enter(void *ptr);
>  extern int reg_event_syscall_exit(void *ptr);
> diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
> index f130dac..b174169 100644
> --- a/kernel/trace/trace_syscalls.c
> +++ b/kernel/trace/trace_syscalls.c
> @@ -1,4 +1,5 @@
>  #include <trace/syscall.h>
> +#include <trace/events/syscalls.h>
>  #include <linux/kernel.h>
>  #include <linux/ftrace.h>
>  #include <linux/perf_counter.h>
> @@ -277,11 +278,11 @@ void unreg_event_syscall_exit(void *ptr)
>  	mutex_unlock(&syscall_trace_lock);
>  }
>  
> -struct trace_event event_syscall_enter = {
> +struct trace_event event_sys_enter = {
>  	.trace			= print_syscall_enter,
>  };
>  
> -struct trace_event event_syscall_exit = {
> +struct trace_event event_sys_exit = {
>  	.trace			= print_syscall_exit,
>  };
>  
> -- 
> 1.6.2.5
> 


looks good.

Acked-by: Jason Baron <jbaron@redhat.com>

thanks,

-Jason

  parent reply	other threads:[~2009-08-19 16:18 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-18  7:23 [PATCH] tracing: Move tracepoint callbacks into DEFINE Josh Stone
2009-08-18 14:19 ` Jason Baron
2009-08-18 22:11   ` Josh Stone
2009-08-18 22:25 ` [PATCH] tracing: Create generic syscall TRACE_EVENTs Josh Stone
2009-08-19  1:32   ` Li Zefan
2009-08-19  3:05     ` Josh Stone
2009-08-19 13:05       ` Ingo Molnar
2009-08-19 13:50         ` Mathieu Desnoyers
2009-08-19 16:16   ` Jason Baron [this message]
2009-08-19 17:43     ` Frederic Weisbecker
2009-08-19 16:13 ` [PATCH] tracing: Move tracepoint callbacks into DEFINE Jason Baron
2009-08-20 17:25   ` Josh Stone
2009-08-20 19:09 ` [PATCH v2 1/2] " Josh Stone
2009-08-20 19:09   ` [PATCH v2 2/2] tracing: Create generic syscall TRACE_EVENTs Josh Stone
2009-08-21 17:57     ` Jason Baron
2009-08-21 19:37       ` Josh Stone
2009-08-21 20:08         ` Jason Baron
2009-08-21 14:47   ` [PATCH v2 1/2] tracing: Move tracepoint callbacks into DEFINE Ingo Molnar
2009-08-21 19:34     ` Josh Stone
2009-08-21 17:52   ` Jason Baron
2009-08-21 19:34     ` Josh Stone
2009-08-21 20:06       ` Jason Baron
2009-08-23 20:29         ` Frederic Weisbecker
2009-08-23 20:15       ` Frederic Weisbecker
2009-08-22  4:58   ` [PATCH v3 0/4] tracing: tweaks for generic syscall events Josh Stone
2009-08-22  4:58     ` [PATCH v3 1/4] tracing: Rename TIF_SYSCALL_FTRACE->_TRACEPOINT Josh Stone
2009-08-22  4:58       ` [PATCH v3 2/4] tracing: Make syscall_(un)regfunc arch-specific Josh Stone
2009-08-22  4:58         ` [PATCH v3 3/4] tracing: Move tracepoint callbacks into DEFINE Josh Stone
2009-08-22  4:58           ` [PATCH v3 4/4] tracing: Create generic syscall TRACE_EVENTs Josh Stone
2009-08-23 21:14         ` [PATCH v3 2/4] tracing: Make syscall_(un)regfunc arch-specific Frederic Weisbecker
2009-08-24  1:40           ` Paul Mundt
2009-08-24  8:41             ` Ingo Molnar
2009-08-24  8:59               ` Paul Mundt
2009-08-24  9:56                 ` Ingo Molnar
2009-08-24 10:32                   ` Paul Mundt
2009-08-24 11:00                     ` Ingo Molnar
2009-08-24 11:15                       ` Paul Mundt
2009-08-24 11:32                         ` Ingo Molnar
2009-08-24 11:52                     ` Ingo Molnar
2009-08-24 12:14                       ` Peter Zijlstra
2009-08-24 11:01                   ` Ingo Molnar
2009-08-24 11:02                     ` Paul Mundt
2009-08-24 19:31           ` Josh Stone
2009-08-24 19:58             ` Frederic Weisbecker
2009-08-24 20:00               ` Josh Stone
2009-08-24 20:12                 ` Frederic Weisbecker
2009-08-23 21:16       ` [PATCH v3 1/4] tracing: Rename TIF_SYSCALL_FTRACE->_TRACEPOINT Frederic Weisbecker
2009-08-24  8:42         ` Ingo Molnar
2009-08-24 11:11           ` Frederic Weisbecker
2009-08-24 11:24             ` Ingo Molnar
2009-08-24 11:29               ` Paul Mundt
2009-08-24 11:36                 ` Ingo Molnar
2009-08-24 21:43     ` [PATCH v4 0/4] tracing: tweaks for generic syscall events Josh Stone
2009-08-24 21:43       ` [PATCH v4 1/4] tracing: Rename FTRACE_SYSCALLS for tracepoints Josh Stone
2009-08-24 21:43         ` [PATCH v4 2/4] tracing: Make syscall tracepoints conditional Josh Stone
2009-08-24 21:43           ` [PATCH v4 3/4] tracing: Move tracepoint callbacks into DEFINE Josh Stone
2009-08-24 21:43             ` [PATCH v4 4/4] tracing: Create generic syscall TRACE_EVENTs Josh Stone
2009-08-26  7:22               ` [tip:tracing/core] " tip-bot for Josh Stone
2009-08-26  7:22             ` [tip:tracing/core] tracing: Move tracepoint callbacks from declaration to definition tip-bot for Josh Stone
2009-08-27 22:50               ` [PATCH] tracing: Fix double CPP substitution in TRACE_EVENT_FN Frederic Weisbecker
2009-08-28  0:38                 ` Josh Stone
2009-08-28 12:29                 ` [tip:tracing/core] " tip-bot for Frederic Weisbecker
2009-08-26  7:21           ` [tip:tracing/core] tracing: Make syscall tracepoints conditional tip-bot for Josh Stone
2009-08-26  7:21         ` [tip:tracing/core] tracing: Rename FTRACE_SYSCALLS for tracepoints tip-bot for Josh Stone
2009-08-24 23:05       ` [PATCH v4 0/4] tracing: tweaks for generic syscall events Frederic Weisbecker
2009-08-25 10:28         ` Ingo Molnar
2009-08-25 13:42           ` Frederic Weisbecker
2009-08-25 14:41             ` Jason Baron
2009-08-25 21:08               ` Frederic Weisbecker
2009-08-25 21:44       ` Frederic Weisbecker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090819161651.GC2649@redhat.com \
    --to=jbaron@redhat.com \
    --cc=fweisbec@gmail.com \
    --cc=jiayingz@google.com \
    --cc=jistone@redhat.com \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=mathieu.desnoyers@polymtl.ca \
    --cc=mbligh@google.com \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.