clocksource: introduce CLOCK_MONOTONIC_RAW
authorJohn Stultz <johnstul@us.ibm.com>
Wed, 20 Aug 2008 23:37:30 +0000 (16:37 -0700)
committerIngo Molnar <mingo@elte.hu>
Thu, 21 Aug 2008 07:50:24 +0000 (09:50 +0200)
commit2d42244ae71d6c7b0884b5664cf2eda30fb2ae68
tree947e86ec6e2d7362daa9a170a352c035f3618d64
parent9a055117d3d9cb562f83f8d4cd88772761f4cab0
clocksource: introduce CLOCK_MONOTONIC_RAW

In talking with Josip Loncaric, and his work on clock synchronization (see
btime.sf.net), he mentioned that for really close synchronization, it is
useful to have access to "hardware time", that is a notion of time that is
not in any way adjusted by the clock slewing done to keep close time sync.

Part of the issue is if we are using the kernel's ntp adjusted
representation of time in order to measure how we should correct time, we
can run into what Paul McKenney aptly described as "Painting a road using
the lines we're painting as the guide".

I had been thinking of a similar problem, and was trying to come up with a
way to give users access to a purely hardware based time representation
that avoided users having to know the underlying frequency and mask values
needed to deal with the wide variety of possible underlying hardware
counters.

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.

The time is accessed from userspace via the posix_clock_gettime() syscall,
passing CLOCK_MONOTONIC_RAW as the clock_id.

Signed-off-by: John Stultz <johnstul@us.ibm.com>
Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/clocksource.h
include/linux/time.h
kernel/posix-timers.c
kernel/time/timekeeping.c