sched: fix cpu clock
authorIngo Molnar <mingo@elte.hu>
Wed, 23 Apr 2008 07:24:06 +0000 (09:24 +0200)
committerIngo Molnar <mingo@elte.hu>
Mon, 5 May 2008 21:56:18 +0000 (23:56 +0200)
commitdfbf4a1bc319f0f9a31e39b2da1fa5c55e85af89
tree0b9dd19406c53a93452dd345bb05f76aa712a757
parentcb4ad1ffc7c0d8ea7dc8cd8ba303d83551716d46
sched: fix cpu clock

David Miller pointed it out that nothing in cpu_clock() sets
prev_cpu_time. This caused __sync_cpu_clock() to be called
all the time - against the intention of this code.

The result was that in practice we hit a global spinlock every
time cpu_clock() is called - which - even though cpu_clock()
is used for tracing and debugging, is suboptimal.

While at it, also:

- move the irq disabling to the outest layer,
  this should make cpu_clock() warp-free when called with irqs
  enabled.

- use long long instead of cycles_t - for platforms where cycles_t
  is 32-bit.

Reported-by: David Miller <davem@davemloft.net>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched.c