From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Jason Baron <jbaron@redhat.com>
Cc: linux-kernel@vger.kernel.org, fweisbec@gmail.com, mingo@elte.hu,
laijs@cn.fujitsu.com, rostedt@goodmis.org, peterz@infradead.org,
jiayingz@google.com, bligh@google.com, roland@redhat.com,
fche@redhat.com
Subject: Re: [PATCH 3/7] add syscall tracepoints
Date: Fri, 12 Jun 2009 17:57:26 -0400 [thread overview]
Message-ID: <20090612215726.GA9177@Krystal> (raw)
In-Reply-To: <0ee4090012cf46f25d8cd8b022746a43b99d5767.1244837725.git.jbaron@redhat.com>
* Jason Baron (jbaron@redhat.com) wrote:
>
> Introduce a new 'DECLARE_TRACE_REG()' macro, so that tracepoints can associate
> an external register/unregister function.
>
>
> Signed-off-by: Jason Baron <jbaron@redhat.com>
>
> ---
> include/linux/tracepoint.h | 27 +++++++++++++++++++++++----
> 1 files changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
> index 14df7e6..9a3660b 100644
> --- a/include/linux/tracepoint.h
> +++ b/include/linux/tracepoint.h
> @@ -61,7 +61,7 @@ struct tracepoint {
> * not add unwanted padding between the beginning of the section and the
> * structure. Force alignment to the same alignment as the section start.
> */
> -#define DECLARE_TRACE(name, proto, args) \
> +#define DECLARE_TRACE_REG(name, proto, args, reg, unreg) \
> extern struct tracepoint __tracepoint_##name; \
> static inline void trace_##name(proto) \
> { \
> @@ -71,13 +71,29 @@ struct tracepoint {
> } \
> static inline int register_trace_##name(void (*probe)(proto)) \
> { \
> - return tracepoint_probe_register(#name, (void *)probe); \
> + int ret; \
> + void (*func)(void) = (void (*)(void))reg; \
> + \
> + ret = tracepoint_probe_register(#name, (void *)probe); \
> + if (func && !ret) \
> + func(); \
I don't see why you need to add this weird interface when all you really
need to do is to call the function to set the TIF flags explicitly in
reg_event_syscall_enter when registering a tracepoint.
Mathieu
> + return ret; \
> } \
> static inline int unregister_trace_##name(void (*probe)(proto)) \
> { \
> - return tracepoint_probe_unregister(#name, (void *)probe);\
> + int ret; \
> + void (*func)(void) = (void (*)(void))unreg; \
> + \
> + ret = tracepoint_probe_unregister(#name, (void *)probe);\
> + if (func && !ret) \
> + func(); \
> + return ret; \
> }
>
> +
> +#define DECLARE_TRACE(name, proto, args) \
> + DECLARE_TRACE_REG(name, TP_PROTO(proto), TP_ARGS(args), 0, 0);
> +
> #define DEFINE_TRACE(name) \
> static const char __tpstrtab_##name[] \
> __attribute__((section("__tracepoints_strings"))) = #name; \
> @@ -94,7 +110,7 @@ extern void tracepoint_update_probe_range(struct tracepoint *begin,
> struct tracepoint *end);
>
> #else /* !CONFIG_TRACEPOINTS */
> -#define DECLARE_TRACE(name, proto, args) \
> +#define DECLARE_TRACE_REG(name, proto, args, reg, unreg) \
> static inline void _do_trace_##name(struct tracepoint *tp, proto) \
> { } \
> static inline void trace_##name(proto) \
> @@ -108,6 +124,9 @@ extern void tracepoint_update_probe_range(struct tracepoint *begin,
> return -ENOSYS; \
> }
>
> +#define DECLARE_TRACE(name, proto, args) \
> + DECLARE_TRACE_REG(name, TP_PROTO(proto), TP_ARGS(args), 0, 0);
> +
> #define DEFINE_TRACE(name)
> #define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
> #define EXPORT_TRACEPOINT_SYMBOL(name)
> --
> 1.6.0.6
>
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
next prev parent reply other threads:[~2009-06-12 21:57 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-12 21:24 [PATCH 0/7] add syscall tracepoints Jason Baron
2009-06-12 21:24 ` [PATCH 1/7] " Jason Baron
2009-06-19 8:22 ` Li Zefan
2009-06-12 21:24 ` [PATCH 2/7] " Jason Baron
2009-06-19 3:24 ` Steven Rostedt
2009-06-19 8:26 ` Li Zefan
2009-06-12 21:24 ` [PATCH 3/7] " Jason Baron
2009-06-12 21:57 ` Mathieu Desnoyers [this message]
2009-06-15 14:12 ` Jason Baron
2009-06-15 15:24 ` Mathieu Desnoyers
2009-06-15 15:37 ` Frederic Weisbecker
2009-06-15 15:47 ` Mathieu Desnoyers
2009-06-19 1:59 ` Frederic Weisbecker
2009-06-19 3:29 ` Steven Rostedt
2009-06-19 3:40 ` Frederic Weisbecker
2009-06-12 21:24 ` [PATCH 4/7] " Jason Baron
2009-06-19 2:12 ` Frederic Weisbecker
2009-06-19 12:35 ` Mathieu Desnoyers
2009-06-19 14:56 ` Frederic Weisbecker
2009-06-19 8:31 ` Li Zefan
2009-06-12 21:24 ` [PATCH 5/7] " Jason Baron
2009-06-19 2:14 ` Frederic Weisbecker
2009-06-19 3:14 ` Li Zefan
2009-06-19 3:32 ` Steven Rostedt
2009-06-19 3:33 ` Frederic Weisbecker
2009-06-12 21:25 ` [PATCH 6/7] " Jason Baron
2009-06-19 2:28 ` Frederic Weisbecker
2009-06-19 21:49 ` Jason Baron
2009-06-12 21:25 ` [PATCH 7/7] " Jason Baron
2009-06-16 19:32 ` [PATCH 0/7] " Ingo Molnar
2009-06-18 2:21 ` Frederic Weisbecker
2009-06-19 3:07 ` 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=20090612215726.GA9177@Krystal \
--to=mathieu.desnoyers@polymtl.ca \
--cc=bligh@google.com \
--cc=fche@redhat.com \
--cc=fweisbec@gmail.com \
--cc=jbaron@redhat.com \
--cc=jiayingz@google.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=roland@redhat.com \
--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.