posixtimers, sched: Fix posix clock monotonicity
authorHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Tue, 31 Mar 2009 07:56:03 +0000 (16:56 +0900)
committerIngo Molnar <mingo@elte.hu>
Wed, 1 Apr 2009 14:44:16 +0000 (16:44 +0200)
commitc5f8d99585d7b5b7e857fabf8aefd0174903a98c
tree504127a7d4b6a0e3aee56d0822e5e8b23f8062d7
parent13b8bd0a5713bdf05659019badd7c0407984ece1
posixtimers, sched: Fix posix clock monotonicity

Impact: Regression fix (against clock_gettime() backwarding bug)

This patch re-introduces a couple of functions, task_sched_runtime
and thread_group_sched_runtime, which was once removed at the
time of 2.6.28-rc1.

These functions protect the sampling of thread/process clock with
rq lock.  This rq lock is required not to update rq->clock during
the sampling.

i.e.
  The clock_gettime() may return
   ((accounted runtime before update) + (delta after update))
  that is less than what it should be.

v2 -> v3:
- Rename static helper function __task_delta_exec()
  to do_task_delta_exec() since -tip tree already has
  a __task_delta_exec() of different version.

v1 -> v2:
- Revises comments of function and patch description.
- Add note about accuracy of thread group's runtime.

Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: stable@kernel.org [2.6.28.x][2.6.29.x]
LKML-Reference: <49D1CC93.4080401@jp.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/posix-cpu-timers.c
kernel/sched.c