----- On May 7, 2018, at 5:46 PM, Joel Fernandes, Google j...@joelfernandes.org wrote:
> On Mon, May 07, 2018 at 05:05:41PM -0400, Mathieu Desnoyers wrote: >> ----- On May 7, 2018, at 4:41 PM, Joel Fernandes joe...@google.com wrote: >> [...] >> > +extern struct srcu_struct tracepoint_srcu; >> > + >> > extern int >> > tracepoint_probe_register(struct tracepoint *tp, void *probe, void *data); >> > extern int >> > @@ -77,6 +80,9 @@ int unregister_tracepoint_module_notifier(struct >> > notifier_block *nb) >> > */ >> > static inline void tracepoint_synchronize_unregister(void) >> > { >> > +#ifdef CONFIG_TRACEPOINTS >> > + synchronize_srcu(&tracepoint_srcu); >> > +#endif >> > synchronize_sched(); >> >> Why is this ifdef needed ? > > tracepoint_srcu is defined in tracepoint.c so if we don't protect usage here, > it > would cause a build error. Then we should ifdef the entire implementation of tracepoint_synchronize_unregister(). There is no point in issuing synchronize_sched() when code invokes that function on a CONFIG_TRACEPOINTS=n config. Thanks, Mathieu > > thanks, > > - Joel -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com