Re: [PATCH 2/5] introduce CLOCK_MONOTONIC_RAW

From: Roman Zippel
Date: Sat Mar 15 2008 - 00:50:47 EST


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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/