timekeeping: Provide fast accessor to the seconds part of CLOCK_MONOTONIC
authorHeena Sirwani <heenasirwani@gmail.com>
Wed, 29 Oct 2014 10:31:16 +0000 (16:01 +0530)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 29 Oct 2014 14:15:40 +0000 (15:15 +0100)
commit9e3680b1750b9a62680b0262c9f438de98b77655
tree771803b021b50766f7fadb318db8230b514ac128
parentcac7f2429872d3733dc3f9915857b1691da2eb2f
timekeeping: Provide fast accessor to the seconds part of CLOCK_MONOTONIC

This is the counterpart to get_seconds() based on CLOCK_MONOTONIC. The
use case for this interface are kernel internal coarse grained
timestamps which do neither require the nanoseconds fraction of
current time nor the CLOCK_REALTIME properties. Such timestamps can
currently only retrieved by calling ktime_get_ts64() and using the
tv_sec field of the returned timespec64. That's inefficient as it
involves the read of the clocksource, math operations and must be
protected by the timekeeper sequence counter.

To avoid the sequence counter protection we restrict the return value
to unsigned 32bit on 32bit machines. This covers ~136 years of uptime
and therefor an overflow is not expected to hit anytime soon.

To avoid math in the function we calculate the current seconds portion
of CLOCK_MONOTONIC when the timekeeper gets updated in
tk_update_ktime_data() similar to the CLOCK_REALTIME counterpart
xtime_sec.

[ tglx: Massaged changelog, simplified and commented the update
   function, added docbook comment ]

Signed-off-by: Heena Sirwani <heenasirwani@gmail.com>
Reviewed-by: Arnd Bergman <arnd@arndb.de>
Cc: John Stultz <john.stultz@linaro.org>
Cc: opw-kernel@googlegroups.com
Link: http://lkml.kernel.org/r/da0b63f4bdf3478909f92becb35861197da3a905.1414578445.git.heenasirwani@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/timekeeper_internal.h
include/linux/timekeeping.h
kernel/time/timekeeping.c
This page took 0.026686 seconds and 5 git commands to generate.