On Mon, May 07, 2018 at 08:37:54PM -0400, Mathieu Desnoyers wrote: > ----- On May 7, 2018, at 5:46 PM, Joel Fernandes, Google > [email protected] wrote: > > > On Mon, May 07, 2018 at 05:05:41PM -0400, Mathieu Desnoyers wrote: > >> ----- On May 7, 2018, at 4:41 PM, Joel Fernandes [email protected] 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.
Ok I'll do it this way in the next rev. Could you also share any thoughts on patch 6/6 if you had some time? Development of it has also been complete for some time. thanks, - Joel

