Messages in this thread | | | From | Alexander Shishkin <> | Subject | Re: [RFC PATCH 2/4] trace: Introduce an output interface from ftrace to STM | Date | Tue, 07 Jun 2016 13:04:41 +0300 |
| |
Chunyan Zhang <zhang.chunyan@linaro.org> writes:
> This patch is introducing a new function to print Ftrace messages > to STM buffer when the traces happen. In order to reduce the > effect on timing overhead as much as possible, only the current > function and its parent ip address will be recorded into STM in > this patch. This idea was first introduced by Philippe Langlais > at ST-Microelectronics a long time ago[1].
So why is this useful? The value of trace points is in their payload.
> +#define STM_FTRACE_CHAN 0
This is why we have the stm master/channel allocation policy, which should already assign a channel to your stm_source device when it is linked to an stm device.
Also, why is this a separate compilation unit from the stm_ftrace.o?
> + > +void ftrace_stm_func(unsigned long ip, unsigned long parent_ip) > +{ > + unsigned long ip_array[2] = {ip, parent_ip}; > + > + stm_ftrace_write((char *)ip_array, sizeof(unsigned long) * 2, > + STM_FTRACE_CHAN); > +} > +EXPORT_SYMBOL_GPL(ftrace_stm_func); > diff --git a/kernel/trace/trace_output_stm.h b/kernel/trace/trace_output_stm.h > new file mode 100644 > index 0000000..fc3f989 > --- /dev/null > +++ b/kernel/trace/trace_output_stm.h > @@ -0,0 +1,14 @@ > +#ifndef __TRACE_OUTPUT_STM_H > +#define __TRACE_OUTPUT_STM_H > + > +#include <linux/module.h> > + > +#ifdef CONFIG_STM_FTRACE > +extern void stm_ftrace_write(const char *buf, unsigned int len, > + unsigned int chan); > +extern void ftrace_stm_func(unsigned long ip, unsigned long parent_ip); > +#else > +static inline void ftrace_stm_func(unsigned long ip, unsigned long parent_ip) {} > +#endif > + > +#endif /* __TRACE_OUTPUT_STM_H */ > -- > 1.9.1
| |