hc
2023-11-07 f45e756958099c35d6afb746df1d40a1c6302cfc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// SPDX-License-Identifier: GPL-2.0
#include <linux/compiler.h>
#include <linux/types.h>
 
#include "tsc.h"
 
u64 perf_time_to_tsc(u64 ns, struct perf_tsc_conversion *tc)
{
   u64 t, quot, rem;
 
   t = ns - tc->time_zero;
   quot = t / tc->time_mult;
   rem  = t % tc->time_mult;
   return (quot << tc->time_shift) +
          (rem << tc->time_shift) / tc->time_mult;
}
 
u64 tsc_to_perf_time(u64 cyc, struct perf_tsc_conversion *tc)
{
   u64 quot, rem;
 
   quot = cyc >> tc->time_shift;
   rem  = cyc & (((u64)1 << tc->time_shift) - 1);
   return tc->time_zero + quot * tc->time_mult +
          ((rem * tc->time_mult) >> tc->time_shift);
}
 
u64 __weak rdtsc(void)
{
   return 0;
}