[ltt-dev] [UST PATCH] Tracepoints: add noargs support
Nils Carlson
nils.carlson at ericsson.com
Mon Apr 11 08:06:51 EDT 2011
Again, what do you think of UST_ prefixing the "externally visible"
macros?
/Nils
On Mon, 11 Apr 2011, Mathieu Desnoyers wrote:
> Add support for tracepoints receiving no argument as parameters. Copied
> from Linux kernel:
>
> commit 38516ab59fbc5b3bb278cf5e1fe2867c70cff32e
> Author: Steven Rostedt <srostedt at redhat.com>
> Date: Tue Apr 20 17:04:50 2010 -0400
>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> CC: Nils Carlson <nils.carlson at ericsson.com>
> CC: Steven Rostedt <srostedt at redhat.com>
> ---
> include/ust/tracepoint.h | 25 +++++++++++++++++++++----
> 1 file changed, 21 insertions(+), 4 deletions(-)
>
> Index: ust/include/ust/tracepoint.h
> ===================================================================
> --- ust.orig/include/ust/tracepoint.h
> +++ ust/include/ust/tracepoint.h
> @@ -175,10 +175,27 @@ static inline void tracepoint_update_pro
> { }
> #endif /* CONFIG_TRACEPOINTS */
>
> -#define DECLARE_TRACE(name, proto, args) \
> - __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \
> - PARAMS(void *__data, proto), \
> - PARAMS(__data, args))
> +/*
> + * The need for the DECLARE_TRACE_NOARGS() is to handle the prototype
> + * (void). "void" is a special value in a function prototype and can
> + * not be combined with other arguments. Since the DECLARE_TRACE()
> + * macro adds a data element at the beginning of the prototype,
> + * we need a way to differentiate "(void *data, proto)" from
> + * "(void *data, void)". The second prototype is invalid.
> + *
> + * DECLARE_TRACE_NOARGS() passes "void" as the tracepoint prototype
> + * and "void *__data" as the callback prototype.
> + *
> + * DECLARE_TRACE() passes "proto" as the tracepoint protoype and
> + * "void *__data, proto" as the callback prototype.
> + */
> +#define DECLARE_TRACE_NOARGS(name) \
> + __DECLARE_TRACE(name, void, , void *__data, __data)
> +
> +#define DECLARE_TRACE(name, proto, args) \
> + __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \
> + PARAMS(void *__data, proto), \
> + PARAMS(__data, args))
>
> /*
> * Connect a probe to a tracepoint.
>
> --
> Mathieu Desnoyers
> Operating System Efficiency R&D Consultant
> EfficiOS Inc.
> http://www.efficios.com
>
More information about the lttng-dev
mailing list