diff options
Diffstat (limited to 'include/asm-generic/cputime_nsecs.h')
-rw-r--r-- | include/asm-generic/cputime_nsecs.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/include/asm-generic/cputime_nsecs.h b/include/asm-generic/cputime_nsecs.h new file mode 100644 index 000000000000..a8ece9a33aef --- /dev/null +++ b/include/asm-generic/cputime_nsecs.h | |||
@@ -0,0 +1,104 @@ | |||
1 | /* | ||
2 | * Definitions for measuring cputime in nsecs resolution. | ||
3 | * | ||
4 | * Based on <arch/ia64/include/asm/cputime.h> | ||
5 | * | ||
6 | * Copyright (C) 2007 FUJITSU LIMITED | ||
7 | * Copyright (C) 2007 Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public License | ||
11 | * as published by the Free Software Foundation; either version | ||
12 | * 2 of the License, or (at your option) any later version. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | #ifndef _ASM_GENERIC_CPUTIME_NSECS_H | ||
17 | #define _ASM_GENERIC_CPUTIME_NSECS_H | ||
18 | |||
19 | typedef u64 __nocast cputime_t; | ||
20 | typedef u64 __nocast cputime64_t; | ||
21 | |||
22 | #define cputime_one_jiffy jiffies_to_cputime(1) | ||
23 | |||
24 | /* | ||
25 | * Convert cputime <-> jiffies (HZ) | ||
26 | */ | ||
27 | #define cputime_to_jiffies(__ct) \ | ||
28 | ((__force u64)(__ct) / (NSEC_PER_SEC / HZ)) | ||
29 | #define cputime_to_scaled(__ct) (__ct) | ||
30 | #define jiffies_to_cputime(__jif) \ | ||
31 | (__force cputime_t)((__jif) * (NSEC_PER_SEC / HZ)) | ||
32 | #define cputime64_to_jiffies64(__ct) \ | ||
33 | ((__force u64)(__ct) / (NSEC_PER_SEC / HZ)) | ||
34 | #define jiffies64_to_cputime64(__jif) \ | ||
35 | (__force cputime64_t)((__jif) * (NSEC_PER_SEC / HZ)) | ||
36 | |||
37 | |||
38 | /* | ||
39 | * Convert cputime <-> nanoseconds | ||
40 | */ | ||
41 | #define nsecs_to_cputime(__nsecs) ((__force u64)(__nsecs)) | ||
42 | |||
43 | |||
44 | /* | ||
45 | * Convert cputime <-> microseconds | ||
46 | */ | ||
47 | #define cputime_to_usecs(__ct) \ | ||
48 | ((__force u64)(__ct) / NSEC_PER_USEC) | ||
49 | #define usecs_to_cputime(__usecs) \ | ||
50 | (__force cputime_t)((__usecs) * NSEC_PER_USEC) | ||
51 | #define usecs_to_cputime64(__usecs) \ | ||
52 | (__force cputime64_t)((__usecs) * NSEC_PER_USEC) | ||
53 | |||
54 | /* | ||
55 | * Convert cputime <-> seconds | ||
56 | */ | ||
57 | #define cputime_to_secs(__ct) \ | ||
58 | ((__force u64)(__ct) / NSEC_PER_SEC) | ||
59 | #define secs_to_cputime(__secs) \ | ||
60 | (__force cputime_t)((__secs) * NSEC_PER_SEC) | ||
61 | |||
62 | /* | ||
63 | * Convert cputime <-> timespec (nsec) | ||
64 | */ | ||
65 | static inline cputime_t timespec_to_cputime(const struct timespec *val) | ||
66 | { | ||
67 | u64 ret = val->tv_sec * NSEC_PER_SEC + val->tv_nsec; | ||
68 | return (__force cputime_t) ret; | ||
69 | } | ||
70 | static inline void cputime_to_timespec(const cputime_t ct, struct timespec *val) | ||
71 | { | ||
72 | val->tv_sec = (__force u64) ct / NSEC_PER_SEC; | ||
73 | val->tv_nsec = (__force u64) ct % NSEC_PER_SEC; | ||
74 | } | ||
75 | |||
76 | /* | ||
77 | * Convert cputime <-> timeval (msec) | ||
78 | */ | ||
79 | static inline cputime_t timeval_to_cputime(const struct timeval *val) | ||
80 | { | ||
81 | u64 ret = val->tv_sec * NSEC_PER_SEC + val->tv_usec * NSEC_PER_USEC; | ||
82 | return (__force cputime_t) ret; | ||
83 | } | ||
84 | static inline void cputime_to_timeval(const cputime_t ct, struct timeval *val) | ||
85 | { | ||
86 | val->tv_sec = (__force u64) ct / NSEC_PER_SEC; | ||
87 | val->tv_usec = ((__force u64) ct % NSEC_PER_SEC) / NSEC_PER_USEC; | ||
88 | } | ||
89 | |||
90 | /* | ||
91 | * Convert cputime <-> clock (USER_HZ) | ||
92 | */ | ||
93 | #define cputime_to_clock_t(__ct) \ | ||
94 | ((__force u64)(__ct) / (NSEC_PER_SEC / USER_HZ)) | ||
95 | #define clock_t_to_cputime(__x) \ | ||
96 | (__force cputime_t)((__x) * (NSEC_PER_SEC / USER_HZ)) | ||
97 | |||
98 | /* | ||
99 | * Convert cputime64 to clock. | ||
100 | */ | ||
101 | #define cputime64_to_clock_t(__ct) \ | ||
102 | cputime_to_clock_t((__force cputime_t)__ct) | ||
103 | |||
104 | #endif | ||