[ltt-dev] LTT for ARM

Ali Günhan Akyürek aliakyurek at gmail.com
Wed Mar 2 08:08:16 EST 2011


Hi Mathieu,

Thanks, i'm looking at patchset.

One more question: As far as I read documentation, UST is not supported on
ARM.
So i'll use easy&dirty way: /mnt/debug/ltt/write_event. Is the overhead too
much?

Suppose I'll add trace to my function which is called nearly ~1000 times in
a second. Is it logical to trace it with the mentioned easy&dirty way?

Thank you very much.
Ali

On Wed, Mar 2, 2011 at 2:22 PM, Mathieu Desnoyers <
compudj at krystal.dyndns.org> wrote:

> * Ali Günhan Akyürek (aliakyurek at gmail.com) wrote:
> > Hi all,
> >
> > Two years ago, I've integrated LTTng to a device with ARM platform and
> with
> > kernel 2.6.22. LTTng version was 0.9.10.
> > I used a sub-arch specific clock source for timestamps, based on the
> > discussion below:
> >
> > http://lttng.org/pipermail/ltt-dev/2009-January/000771.html
> >
> > My sub-arch specific code in asm-arm/ltt.h was the following:
> >
> > +#ifndef _ASM_ARM_LTT_H
> > +#define _ASM_ARM_LTT_H
> > +
> > +#include <linux/jiffies.h>
> > +#include <linux/seqlock.h>
> > +
> > +#define LTT_ARCH_TYPE LTT_ARCH_TYPE_ARM
> > +#define LTT_ARCH_VARIANT LTT_ARCH_VARIANT_NONE
> > +
> > +#define DEV_MEM_READ_LE(addr)  ((*((volatile unsigned int*)(addr))))
> > +
> > +#define SOCTIMER1_VAL_REG 0xF102031C
> > +#define TIMER1_VAL ((0xffffffff - DEV_MEM_READ_LE(SOCTIMER1_VAL_REG)))
> > +
> > +#define TCLK_200MHZ    200000000
> > +
> > +u64 ltt_heartbeat_read_synthetic_tsc(void);
> > +#undef LTT_HAS_TSC
> > +
> > +
> > +static inline u32 ltt_get_timestamp32(void)
> > +{
> > +    return TIMER1_VAL;
> > +}
> > +
> > +/* The shift overflow doesn't matter */
> > +static inline u64 ltt_get_timestamp64(void)
> > +{
> > +    return ltt_heartbeat_read_synthetic_tsc();
> > +}
> > +
> > +/* this has to be called with the write seqlock held */
> > +static inline void ltt_reset_timestamp(void)
> > +{
> > +    //atomic_set(&lttng_logical_clock, 0);
> > +}
> > +
> > +
> > +static inline unsigned int ltt_frequency(void)
> > +{
> > +    return TCLK_200MHZ;    //number of timer ticks in a second.
> > +}
> > +
> > +
> > +static inline u32 ltt_freq_scale(void)
> > +{
> > +  return 1;
> > +}
> >
> > This worked great for me at that time. However as today, I have to use
> > kernel 2.6.31 and LTTng 0.178 on same device.
> > Now, nor asm-arm/ltt.h, neither ltt_get_timestamp32 function exists. How
> > must I proceed?
> > Thanks in advance.
>
> The best way to understand the ARM trace clock is to look at the lttng
> "development snapshot" patchset, which includes the LTTng trace clocks
> patches all folded into about one patch per architecture. See
>
> http://lists.casi.polymtl.ca/pipermail/ltt-dev/2011-January/003751.html
>
> Once you see how the trace clock code works, and how to create your own
> patch to add your own support, you can then move to the "lttng stable"
> tree, which are still the versions you should use as an end user (until
> we complete the current development phase).
>
> Thanks,
>
> Mathieu
>
> >
> > Best regards,
> > Ali
>
> > _______________________________________________
> > ltt-dev mailing list
> > ltt-dev at lists.casi.polymtl.ca
> > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>
>
> --
> Mathieu Desnoyers
> Operating System Efficiency R&D Consultant
> EfficiOS Inc.
> http://www.efficios.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20110302/2daea44e/attachment-0003.htm>


More information about the lttng-dev mailing list