On Tue, 6 Sep 2022 19:38:00 -0700 Arun Easi <aeasi@xxxxxxxxxxx> wrote: > Fix this compilation error seen when CONFIG_TRACING is not enabled: > > drivers/scsi/qla2xxx/qla_os.c: In function 'qla_trace_init': > drivers/scsi/qla2xxx/qla_os.c:2854:25: error: implicit declaration of function > 'trace_array_get_by_name'; did you mean 'trace_array_set_clr_event'? > [-Werror=implicit-function-declaration] > 2854 | qla_trc_array = trace_array_get_by_name("qla2xxx"); > | ^~~~~~~~~~~~~~~~~~~~~~~ > | trace_array_set_clr_event > > drivers/scsi/qla2xxx/qla_os.c: In function 'qla_trace_uninit': > drivers/scsi/qla2xxx/qla_os.c:2869:9: error: implicit declaration of function > 'trace_array_put' [-Werror=implicit-function-declaration] > 2869 | trace_array_put(qla_trc_array); > | ^~~~~~~~~~~~~~~ > > Reported-by: kernel test robot <lkp@xxxxxxxxx> > Signed-off-by: Arun Easi <aeasi@xxxxxxxxxxx> > --- > include/linux/trace.h | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/include/linux/trace.h b/include/linux/trace.h > index bf16961..bf206c3 100644 > --- a/include/linux/trace.h > +++ b/include/linux/trace.h > @@ -48,6 +48,23 @@ void osnoise_arch_unregister(void); > void osnoise_trace_irq_entry(int id); > void osnoise_trace_irq_exit(int id, const char *desc); > > +#else /* CONFIG_TRACING */ > +#define TRACE_EXPORT_FUNCTION 0 > +#define TRACE_EXPORT_EVENT 0 > +#define TRACE_EXPORT_MARKER 0 > +struct trace_export { }; The original for the above can just be moved out of the #ifdef CONFIG_TRACING. No need to "hide" them. > +#define register_ftrace_export(export) -EINVAL > +#define unregister_ftrace_export(export) 0 > +#define trace_printk_init_buffers() > +#define trace_array_printk(tr, ip, fmt, ...) 0 > +#define trace_array_init_printk(tr) -EINVAL > +#define trace_array_put(tr) > +#define trace_array_get_by_name(name) NULL > +#define trace_array_destroy(tr) 0 With the data outside the #ifdef, the above should be converted into static inlines. > +#define osnoise_arch_register() -EINVAL > +#define osnoise_arch_unregister() > +#define osnoise_trace_irq_entry(id) > +#define osnoise_trace_irq_exit(id, desc) No need to define the osnoise functions. These are only here to allow archs to define them. They should never be referenced when CONFIG_TRACING is not set. > #endif /* CONFIG_TRACING */ > > #endif /* _LINUX_TRACE_H */