2007-09-12 21:17:12

by Jeff Dike

[permalink] [raw]
Subject: [PATCH 7/11] UML - clocksource support

Add clocksource support.

Signed-off-by: Jeff Dike <[email protected]>
--
arch/um/kernel/time.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Index: linux-2.6.22/arch/um/kernel/time.c
===================================================================
--- linux-2.6.22.orig/arch/um/kernel/time.c 2007-09-12 15:12:11.000000000 -0400
+++ linux-2.6.22/arch/um/kernel/time.c 2007-09-12 15:12:35.000000000 -0400
@@ -97,6 +97,21 @@ static irqreturn_t um_timer(int irq, voi
return IRQ_HANDLED;
}

+static cycle_t itimer_read(void)
+{
+ return os_nsecs();
+}
+
+static struct clocksource itimer_clocksource = {
+ .name = "itimer",
+ .rating = 300,
+ .read = itimer_read,
+ .mask = CLOCKSOURCE_MASK(64),
+ .mult = 1,
+ .shift = 0,
+ .flags = CLOCK_SOURCE_IS_CONTINUOUS,
+};
+
static void __init setup_itimer(void)
{
int err;
@@ -108,6 +123,12 @@ static void __init setup_itimer(void)
printk(KERN_ERR "register_timer : request_irq failed - "
"errno = %d\n", -err);

+ err = clocksource_register(&itimer_clocksource);
+ if (err) {
+ printk(KERN_ERR "clocksource_register returned %d\n", err);
+ return;
+ }
+
itimer_clockevent.mult = div_sc(HZ, NSEC_PER_SEC, 32);
itimer_clockevent.max_delta_ns =
clockevent_delta2ns(60 * HZ, &itimer_clockevent);