public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Introduce CLOCK_BOOTTIME (v2)
@ 2010-12-21  4:38 John Stultz
  2010-12-21  4:38 ` [PATCH 1/2] [RFC] hrtimers: extend hrtimer base code to handle more then 2 clockids John Stultz
  2010-12-21  4:38 ` [PATCH 2/2] [RFC] hrtimers: Add CLOCK_BOOTTIME clockid, hrtimerbase and posix interface John Stultz
  0 siblings, 2 replies; 5+ messages in thread
From: John Stultz @ 2010-12-21  4:38 UTC (permalink / raw)
  To: LKML
  Cc: John Stultz, Jamie Lokier, Thomas Gleixner, Alexander Shishkin,
	Arve Hjnnevg

After some discussions with Jamie Lokier about some of the 
drawbacks of CLOCK_MONOTONIC not incrementing during suspend
(see http://www.spinics.net/lists/linux-fsdevel/msg40272.html),
I wanted to see if we couldn't provide a new clockid that would 
allow applications that wanted to be aware of time passing during
suspend without having to deal with the inconsistencies of 
CLOCK_REALTIME caused by calls to settimeofday.

So this patchset introduces CLOCK_BOOTTIME, which is identical
to CLOCK_MONOTONIC, but includes any time spent in suspend.

This second version of the patch uses a array table for the
clock_id->hrtimer_base convesion instead of the switch.

Thomas: I've not been able to do much comparision at the asm
level for ppc and arm (while I have cross tools for compiling,
I don't have objdump for those arches on my build box) between
this and the previous switch code. But on x86, size breakdown
looks like:

Original:
   text	   data	    bss	    dec	    hex	filename
15517512	1899836	 891200	18308548	1175dc4	vmlinux

Switch:
   text	   data	    bss	    dec	    hex	filename
15517716	1899804	 891200	18308720	1175e70	vmlinux

Table:
   text	   data	    bss	    dec	    hex	filename
15517873	1899868	 891200	18308941	1175f4d	vmlinux

So that's not as great, but remvoing the WARN_ON added in 
hrtimer_clockid_to_base drops it down quite a bit:
Table-nowarn:
   text	   data	    bss	    dec	    hex	filename
15517617	1899804	 891200	18308621	1175e0d	vmlinux

Looking at the asm, the change from the original is limited
(as expected)to: hrtimer_get_res, hrtimer_init, 
__hrtimer_start_range_ns,  where the difference is a few extra
movs, and and hrtimers_init, where there's the extra table
initialization work.

If you have any tips for more specific comprisions please let
me know. Diffing objdump output doesn't always make it super
clear as to what changed.

Jamie: On platforms that don't implement read_persistent_clock,
your issue would still be present, but fixing that is on my list.
Other then that issue, does this seem to address your concern?

Arve: I believe CLOCK_BOOTTIME would be sufficient for what
Android is using as elapsedRealtime() or 
ANDROID_ALARM_ELAPSED_REALTIME. If not please let me know why.

thanks
-john


CC: Jamie Lokier <jamie@shareable.org>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Alexander Shishkin <virtuoso@slind.org>
CC: Arve Hjnnevg <arve@android.com>

John Stultz (2):
  [RFC] hrtimers: extend hrtimer base code to handle more then 2
    clockids
  [RFC] hrtimers: Add CLOCK_BOOTTIME clockid, hrtimerbase and posix
    interface

 include/linux/hrtimer.h   |    8 ++++-
 include/linux/time.h      |    4 ++
 kernel/hrtimer.c          |   63 +++++++++++++++++++++++++++--------
 kernel/posix-timers.c     |   16 ++++++++-
 kernel/time/timekeeping.c |   79 ++++++++++++++++++++++++++++++++++++++++++++-
 5 files changed, 152 insertions(+), 18 deletions(-)

-- 
1.7.3.2.146.gca209


^ permalink raw reply	[flat|nested] 5+ messages in thread
* [PATCH 0/2] [RFC] Introduce CLOCK_BOOTTIME
@ 2010-12-16  0:40 John Stultz
  2010-12-16  0:40 ` [PATCH 2/2][RFC] hrtimers: Add CLOCK_BOOTTIME clockid, hrtimerbase and posix interface John Stultz
  0 siblings, 1 reply; 5+ messages in thread
From: John Stultz @ 2010-12-16  0:40 UTC (permalink / raw)
  To: LKML
  Cc: John Stultz, Jamie Lokier, Thomas Gleixner, Alexander Shishkin,
	Arve Hj�nnev�g

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=UTF-8, Size: 1874 bytes --]

After some discussions with Jamie Lokier about some of the 
drawbacks of CLOCK_MONOTONIC not incrementing during suspend
(see http://www.spinics.net/lists/linux-fsdevel/msg40272.html),
I wanted to see if we couldn't provide a new clockid that would 
allow applications that wanted to be aware of time passing during
suspend without having to deal with the inconsistencies of 
CLOCK_REALTIME caused by calls to settimeofday.

So this patchset introduces CLOCK_BOOTTIME, which is identical
to CLOCK_MONOTONIC, but includes any time spent in suspend.

This is just my initial stab at this, so I'd appreciate any comments
or thougths on these patches.

Jamie: On platforms that don't implement read_persistent_clock,
your issue would still be present, but fixing that is on my list.
Other then that issue, does this seem to address your concern?

Thomas: Let me know if the hrtimer_base indirection is too 
gross. It just seemed silly to create 5 empty bases so we could
have an exact match between the clockids and the bases.

Arve: I believe CLOCK_BOOTTIME would be sufficient for what
Android is using as elapsedRealtime() or 
ANDROID_ALARM_ELAPSED_REALTIME. If not please let me know why.

thanks
-john


CC: Jamie Lokier <jamie@shareable.org>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Alexander Shishkin <virtuoso@slind.org>
CC: Arve Hjønnevåg <arve@android.com>


John Stultz (2):
  hrtimers: extend hrtimer base code to handle more then 2 clockids
  hrtimers: Add CLOCK_BOOTTIME clockid, hrtimerbase and posix interface

 include/linux/hrtimer.h   |   22 ++++++++++++-
 include/linux/time.h      |    4 ++
 kernel/hrtimer.c          |   44 ++++++++++++++++---------
 kernel/posix-timers.c     |   16 ++++++++-
 kernel/time/timekeeping.c |   79 ++++++++++++++++++++++++++++++++++++++++++++-
 5 files changed, 146 insertions(+), 19 deletions(-)

-- 
1.7.3.2.146.gca209


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-12-21  4:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-21  4:38 [PATCH 0/2] Introduce CLOCK_BOOTTIME (v2) John Stultz
2010-12-21  4:38 ` [PATCH 1/2] [RFC] hrtimers: extend hrtimer base code to handle more then 2 clockids John Stultz
2010-12-21  4:38 ` [PATCH 2/2] [RFC] hrtimers: Add CLOCK_BOOTTIME clockid, hrtimerbase and posix interface John Stultz
  -- strict thread matches above, loose matches on Subject: below --
2010-12-16  0:40 [PATCH 0/2] [RFC] Introduce CLOCK_BOOTTIME John Stultz
2010-12-16  0:40 ` [PATCH 2/2][RFC] hrtimers: Add CLOCK_BOOTTIME clockid, hrtimerbase and posix interface John Stultz
2010-12-16  0:47   ` John Stultz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox