xref: /openbmc/linux/tools/perf/util/tsc.h (revision bc2373a5)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
20b437860SAdrian Hunter #ifndef __PERF_TSC_H
30b437860SAdrian Hunter #define __PERF_TSC_H
40b437860SAdrian Hunter 
50b437860SAdrian Hunter #include <linux/types.h>
60b437860SAdrian Hunter 
781e70d7eSLeo Yan #include "event.h"
881e70d7eSLeo Yan 
92a28e230SAdrian Hunter struct perf_tsc_conversion {
102a28e230SAdrian Hunter 	u16 time_shift;
112a28e230SAdrian Hunter 	u32 time_mult;
122a28e230SAdrian Hunter 	u64 time_zero;
1378a93d4cSLeo Yan 	u64 time_cycles;
1478a93d4cSLeo Yan 	u64 time_mask;
1578a93d4cSLeo Yan 
1678a93d4cSLeo Yan 	bool cap_user_time_zero;
1778a93d4cSLeo Yan 	bool cap_user_time_short;
182a28e230SAdrian Hunter };
19ea49e01cSArnaldo Carvalho de Melo 
202a28e230SAdrian Hunter struct perf_event_mmap_page;
212a28e230SAdrian Hunter 
222a28e230SAdrian Hunter int perf_read_tsc_conversion(const struct perf_event_mmap_page *pc,
232a28e230SAdrian Hunter 			     struct perf_tsc_conversion *tc);
240b437860SAdrian Hunter 
250b437860SAdrian Hunter u64 perf_time_to_tsc(u64 ns, struct perf_tsc_conversion *tc);
260b437860SAdrian Hunter u64 tsc_to_perf_time(u64 cyc, struct perf_tsc_conversion *tc);
27a6a69db4SAdrian Hunter u64 rdtsc(void);
28*bc2373a5SKan Liang double arch_get_tsc_freq(void);
290b437860SAdrian Hunter 
3081e70d7eSLeo Yan size_t perf_event__fprintf_time_conv(union perf_event *event, FILE *fp);
3181e70d7eSLeo Yan 
32ea49e01cSArnaldo Carvalho de Melo #endif // __PERF_TSC_H
33