All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tim Bird <tim.bird@am.sony.com>
To: "Steven Rostedt" <rostedt@goodmis.org>,
	"Ingo Molnar" <mingo@elte.hu>,
	"Frederic Weisbecker" <fweisbec@gmail.com>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"linux kernel" <linux-kernel@vger.kernel.org>,
	linux-arm-kernel <linux-arm-kernel@lists.arm.linux.org.uk>
Subject: How to use a different sched_clock() for ftrace on omap?
Date: Wed, 6 May 2009 16:54:27 -0700	[thread overview]
Message-ID: <4A022333.8030200@am.sony.com> (raw)

Hi all,

I've worked up a replacement sched_clock for ftrace on my omap platform.
The current sched_clock, based on the 32K timer, has low resolution and
doesn't provide very useful results.

Unfortunately, I'm not sure the best way to use my special one, in place
of a common one in arch/arm/plat-omap/common.c

Here's a patch:

---
 arch/arm/mach-omap1/time.c  |    9 +++++++++
 arch/arm/plat-omap/common.c |    2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

--- a/arch/arm/mach-omap1/time.c
+++ b/arch/arm/mach-omap1/time.c
@@ -212,6 +212,15 @@ static struct clocksource clocksource_mp
 	.flags		= CLOCK_SOURCE_IS_CONTINUOUS,
 };

+unsigned long long notrace sched_clock(void)
+{
+	unsigned long long ret;
+
+	ret = (unsigned long long) ~omap_mpu_timer_read(1);
+	ret = (ret * clocksource_mpu.mult_orig) >>clocksource_mpu.shift;
+	return ret;
+}
+
 static void __init omap_init_clocksource(unsigned long rate)
 {
 	static char err[] __initdata = KERN_ERR
--- a/arch/arm/plat-omap/common.c
+++ b/arch/arm/plat-omap/common.c
@@ -203,7 +203,7 @@ static struct clocksource clocksource_32
  * Returns current time from boot in nsecs. It's OK for this to wrap
  * around for now, as it's just a relative time stamp.
  */
-unsigned long long notrace sched_clock(void)
+__attribute__((weak)) unsigned long long notrace sched_clock_old(void)
 {
 	unsigned long long ret;


Obviously, renaming the common sched_clock() to sched_clock_old() is
a hack.

I thought the __attribute__ ((weak)) would be enough to have the
sched_clock() in common.c get out of the way, and allow my board-specific
sched_clock() to be used.  But that didn't work.  What is the recommended
way to specify a board-specific function at compile time?

Thanks,
 -- Tim

=============================
Tim Bird
Architecture Group Chair, CE Linux Forum
Senior Staff Engineer, Sony Corporation of America
=============================


             reply	other threads:[~2009-05-06 23:55 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-06 23:54 Tim Bird [this message]
2009-05-07  0:34 ` How to use a different sched_clock() for ftrace on omap? Ryan Mallon
2009-05-07  8:51 ` Ingo Molnar
2009-05-07 13:56   ` Steven Rostedt
2009-05-07 13:59     ` Ingo Molnar
     [not found] <cyZbZ-7Eg-9@gated-at.bofh.it>
2009-05-07 14:08 ` Kevin Hilman
2009-05-07 17:19   ` Tim Bird
2009-05-07 17:34     ` Kevin Hilman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A022333.8030200@am.sony.com \
    --to=tim.bird@am.sony.com \
    --cc=fweisbec@gmail.com \
    --cc=linux-arm-kernel@lists.arm.linux.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --cc=u.kleine-koenig@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.