18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef __PERF_TSC_H 38c2ecf20Sopenharmony_ci#define __PERF_TSC_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include <linux/types.h> 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cistruct perf_tsc_conversion { 88c2ecf20Sopenharmony_ci u16 time_shift; 98c2ecf20Sopenharmony_ci u32 time_mult; 108c2ecf20Sopenharmony_ci u64 time_zero; 118c2ecf20Sopenharmony_ci u64 time_cycles; 128c2ecf20Sopenharmony_ci u64 time_mask; 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci bool cap_user_time_zero; 158c2ecf20Sopenharmony_ci bool cap_user_time_short; 168c2ecf20Sopenharmony_ci}; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cistruct perf_event_mmap_page; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ciint perf_read_tsc_conversion(const struct perf_event_mmap_page *pc, 218c2ecf20Sopenharmony_ci struct perf_tsc_conversion *tc); 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ciu64 perf_time_to_tsc(u64 ns, struct perf_tsc_conversion *tc); 248c2ecf20Sopenharmony_ciu64 tsc_to_perf_time(u64 cyc, struct perf_tsc_conversion *tc); 258c2ecf20Sopenharmony_ciu64 rdtsc(void); 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci#endif // __PERF_TSC_H 28