summaryrefslogtreecommitdiffstats
path: root/include/asm-powerpc/cputime.h
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2006-07-05 11:24:26 +0100
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-05 09:39:54 -0700
commita8e0c51c71fc973b400f6502382063553b82af5a (patch)
tree72312c480c89289a885f907248a6a0ef8e1b0bb2 /include/asm-powerpc/cputime.h
parentba1826e5eced176cc9ec0033ad8ee0f1cd5ad2e4 (diff)
[PATCH] powerpc: implement missing jiffies64_to_cputime64()
asm-powerpc/cputime.h doesn't declare jiffies64_to_cputime64() or cputime64_sub(), and due to CONFIG_VIRT_CPU_ACCOUNTING it's not picking up the definition from asm-generic like x86-64 & friends do. Cc: Dave Jones <davej@redhat.com> Cc: Andrew Morton <akpm@osdl.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-powerpc/cputime.h')
-rw-r--r--include/asm-powerpc/cputime.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/asm-powerpc/cputime.h b/include/asm-powerpc/cputime.h
index a21185d4788..31080448520 100644
--- a/include/asm-powerpc/cputime.h
+++ b/include/asm-powerpc/cputime.h
@@ -43,6 +43,7 @@ typedef u64 cputime64_t;
#define cputime64_zero ((cputime64_t)0)
#define cputime64_add(__a, __b) ((__a) + (__b))
+#define cputime64_sub(__a, __b) ((__a) - (__b))
#define cputime_to_cputime64(__ct) (__ct)
#ifdef __KERNEL__
@@ -74,6 +75,23 @@ static inline cputime_t jiffies_to_cputime(const unsigned long jif)
return ct;
}
+static inline cputime64_t jiffies64_to_cputime64(const u64 jif)
+{
+ cputime_t ct;
+ u64 sec;
+
+ /* have to be a little careful about overflow */
+ ct = jif % HZ;
+ sec = jif / HZ;
+ if (ct) {
+ ct *= tb_ticks_per_sec;
+ do_div(ct, HZ);
+ }
+ if (sec)
+ ct += (cputime_t) sec * tb_ticks_per_sec;
+ return ct;
+}
+
static inline u64 cputime64_to_jiffies64(const cputime_t ct)
{
return mulhdu(ct, __cputime_jiffies_factor);