[lttng-dev] [PATCH lttng-ust] Add lttng_ust_notrace to static inline functions

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Mon Jul 7 11:46:20 EDT 2014


----- Original Message -----
> From: "Paul Woegerer" <Paul_Woegerer at mentor.com>
> To: "Mathieu Desnoyers" <mathieu.desnoyers at efficios.com>
> Cc: lttng-dev at lists.lttng.org
> Sent: Monday, July 7, 2014 11:34:19 AM
> Subject: Re: [PATCH lttng-ust] Add lttng_ust_notrace to static inline functions
> 
> On 07/07/2014 04:57 PM, Mathieu Desnoyers wrote:
> > Merged into master and stable-2.4, thanks!
> 
> Thanks !
> 
> Hmmm ... but what to do about static inline function cds_list_empty
> (included via lttng/ust-tracepoint-event.h -> urcu/rculist.h ->
> urcu/list.h). Would you accept a patch that introduces rcu_cds_notrace
> in urcu/compiler.h + respective changes in urcu/*.h ?

It starts to look like a cat and mouse game honestly. Especially if
we consider "contexts", those can call external functions, which might
not have notrace attribute.

I think the proper solution here would be to use a per-thread nesting
value, and check it in the finstrument-function callback, and return
immediately if we are nested.

Thoughts ?

Thanks,

Mathieu

> 
> --
> Paul
> 
> > 
> > Mathieu
> > 
> > ----- Original Message -----
> >> From: "Paul Woegerer" <paul_woegerer at mentor.com>
> >> To: lttng-dev at lists.lttng.org, "mathieu desnoyers"
> >> <mathieu.desnoyers at efficios.com>
> >> Cc: "Paul Woegerer" <paul_woegerer at mentor.com>
> >> Sent: Monday, July 7, 2014 10:04:21 AM
> >> Subject: [PATCH lttng-ust] Add lttng_ust_notrace to static inline
> >> functions
> >>
> >> The static inline functions
> >> __tracepoint_provider_mismatch_<TRACEPOINT_PROVIDER> and
> >> __tracepoint_provider_check_<TRACEPOINT_PROVIDER> are missing the
> >> lttng_ust_notrace attribute to prevent them from getting instrumented
> >> with -finstrument-functions (if e.g. defined in CFLAGS). This patch is
> >> adding the attribute to those functions.
> >>
> >> Signed-off-by: Paul Woegerer <paul_woegerer at mentor.com>
> >> ---
> >>  include/lttng/ust-tracepoint-event.h | 4 ++++
> >>  1 file changed, 4 insertions(+)
> >>
> >> diff --git a/include/lttng/ust-tracepoint-event.h
> >> b/include/lttng/ust-tracepoint-event.h
> >> index d12e8bb..8895310 100644
> >> --- a/include/lttng/ust-tracepoint-event.h
> >> +++ b/include/lttng/ust-tracepoint-event.h
> >> @@ -75,6 +75,8 @@
> >>  /* Reset all macros within TRACEPOINT_EVENT */
> >>  #include <lttng/ust-tracepoint-event-reset.h>
> >>  
> >> +static inline lttng_ust_notrace
> >> +void _TP_COMBINE_TOKENS(__tracepoint_provider_mismatch_,
> >> TRACEPOINT_PROVIDER)(void);
> >>  static inline
> >>  void _TP_COMBINE_TOKENS(__tracepoint_provider_mismatch_,
> >>  TRACEPOINT_PROVIDER)(void)
> >>  {
> >> @@ -88,6 +90,8 @@ void _TP_COMBINE_TOKENS(__tracepoint_provider_mismatch_,
> >> TRACEPOINT_PROVIDER)(vo
> >>  #define TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args)	\
> >>  	__tracepoint_provider_mismatch_##_provider();
> >>  
> >> +static inline lttng_ust_notrace
> >> +void _TP_COMBINE_TOKENS(__tracepoint_provider_check_,
> >> TRACEPOINT_PROVIDER)(void);
> >>  static inline
> >>  void _TP_COMBINE_TOKENS(__tracepoint_provider_check_,
> >>  TRACEPOINT_PROVIDER)(void)
> >>  {
> >> --
> >> 2.0.1
> >>
> >>
> > 
> 
> 
> --
> Paul Woegerer, SW Development Engineer
> Sourcery Analyzer <http://go.mentor.com/sourceryanalyzer>
> Mentor Graphics, Embedded Software Division
> 

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list