[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