linux-mips
[Top] [All Lists]

Re: Measuring time

To: bora.sahin@ttnet.net.tr
Subject: Re: Measuring time
From: Ralf Baechle <ralf@linux-mips.org>
Date: Sun, 25 Mar 2007 00:54:17 +0000
Cc: linux-mips@linux-mips.org
In-reply-to: <200703242025.10303.bora.sahin@ttnet.net.tr>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <200703242025.10303.bora.sahin@ttnet.net.tr>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.4.2.2i
On Sat, Mar 24, 2007 at 08:25:10PM +0200, bora.sahin@ttnet.net.tr wrote:

> I want to meause the time between irq_enter and my consumer driver read 
> routine. How can I do that or which toool should I use?

That's a very specific question so standard tools don't seem to be
applicable.  I suggest you simple use the CPU's count register to meassure
the time.  It can be used like:

#include <linux/kernel.h>
#include <asm/mipsregs.h>

void foo(void)
{
        unsigned int start, end;

        start = read_c0_counter();
        printk("Goodbye, cruel world ...\n");
        end = read_c0_counter();

        printk("Time for printk: %d\n", end - start);
}

Note that some very old MIPS processors don't have such a counter.  Also
in some cores the counter will increment once per cycle on others it will
increment every 2nd cycle and on yet others such as the RM5230 this is
configurable.  So you may want to check your processor manual.

The cp0 counter is the timer of choice for this meassurement because it's
very high resolution and can can be accessed with low overhead making
it ideal for the very short time you want to meassure.

Cheers,

  Ralf

<Prev in Thread] Current Thread [Next in Thread>