mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
taskstats: use real microsecond granularity for CPU times
The taskstats interface uses microsecond granularity for the user and system time values. The conversion from cputime to the taskstats values uses the cputime_to_msecs primitive which effectively limits the granularity to milliseconds. Add the cputime_to_usecs primitive for architectures that have better, more precise CPU time values. Remove cputime_to_msecs primitive because there are no more users left. Signed-off-by: Michael Holzheu <[email protected]> Acked-by: Balbir Singh <[email protected]> Cc: Luck Tony <[email protected]> Cc: Shailabh Nagar <[email protected]> Cc: Martin Schwidefsky <[email protected]> Cc: Oleg Nesterov <[email protected]> Cc: Benjamin Herrenschmidt <[email protected]> Cc: Heiko Carstens <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Shailabh Nagar <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
3d9e0cf1fe
commit
d57af9b214
5 changed files with 21 additions and 23 deletions
|
|
@ -124,23 +124,23 @@ static inline u64 cputime64_to_jiffies64(const cputime_t ct)
|
|||
}
|
||||
|
||||
/*
|
||||
* Convert cputime <-> milliseconds
|
||||
* Convert cputime <-> microseconds
|
||||
*/
|
||||
extern u64 __cputime_msec_factor;
|
||||
|
||||
static inline unsigned long cputime_to_msecs(const cputime_t ct)
|
||||
static inline unsigned long cputime_to_usecs(const cputime_t ct)
|
||||
{
|
||||
return mulhdu(ct, __cputime_msec_factor);
|
||||
return mulhdu(ct, __cputime_msec_factor) * USEC_PER_MSEC;
|
||||
}
|
||||
|
||||
static inline cputime_t msecs_to_cputime(const unsigned long ms)
|
||||
static inline cputime_t usecs_to_cputime(const unsigned long us)
|
||||
{
|
||||
cputime_t ct;
|
||||
unsigned long sec;
|
||||
|
||||
/* have to be a little careful about overflow */
|
||||
ct = ms % 1000;
|
||||
sec = ms / 1000;
|
||||
ct = us % 1000000;
|
||||
sec = us / 1000000;
|
||||
if (ct) {
|
||||
ct *= tb_ticks_per_sec;
|
||||
do_div(ct, 1000);
|
||||
|
|
|
|||
Loading…
Reference in a new issue