[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0803150536290.1791@scrub.home>
Date: Sat, 15 Mar 2008 05:50:02 +0100 (CET)
From: Roman Zippel <zippel@...ux-m68k.org>
To: john stultz <johnstul@...ibm.com>
cc: lkml <linux-kernel@...r.kernel.org>, Ingo Molnar <mingo@...e.hu>
Subject: Re: [PATCH 2/5] introduce CLOCK_MONOTONIC_RAW
Hi,
On Fri, 14 Mar 2008, john stultz wrote:
> My solution is to introduce CLOCK_MONOTONIC_RAW. This exposes a
> nanosecond based time value, that increments starting at bootup and has
> no frequency adjustments made to it what so ever.
A general comment: the raw clock doesn't need any adjustments, so updates
don't have to be done that frequently and you can move most of that logic
into second_overflow().
> @@ -439,6 +475,7 @@ static void clocksource_adjust(s64 offset)
> void update_wall_time(void)
> {
> cycle_t offset;
> + static u64 raw_snsec; /* shifted raw nanosecnds */
>
> /* Make sure we're fully resumed: */
> if (unlikely(timekeeping_suspended))
IMO that's really a clock property, so this belongs in the clock
structure.
(Some day we may want to have multiple active clocks for various purposes
and thus export multiple raw clocks.)
> @@ -466,6 +504,11 @@ void update_wall_time(void)
> second_overflow();
> }
>
> + if (raw_snsec >= (u64)NSEC_PER_SEC << clock->shift) {
> + raw_snsec -= (u64)NSEC_PER_SEC << clock->shift;
> + monotonic_raw.tv_sec++;
> + }
> +
You don't really have to use clock->shift as a scale, thus simplifying the
shifting here (e.g. by using NTP_SCALE_SHIFT).
I'm thinking about doing this for e.g. xtime_nsec as well.
bye, Roman
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists