----- 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

Reply via email to