10b437860SAdrian Hunter #ifndef __PERF_TSC_H 20b437860SAdrian Hunter #define __PERF_TSC_H 30b437860SAdrian Hunter 40b437860SAdrian Hunter #include <linux/types.h> 50b437860SAdrian Hunter 646bc29b9SAdrian Hunter #include "event.h" 72a28e230SAdrian Hunter 82a28e230SAdrian Hunter struct perf_tsc_conversion { 92a28e230SAdrian Hunter u16 time_shift; 102a28e230SAdrian Hunter u32 time_mult; 112a28e230SAdrian Hunter u64 time_zero; 122a28e230SAdrian Hunter }; 132a28e230SAdrian Hunter struct perf_event_mmap_page; 142a28e230SAdrian Hunter 152a28e230SAdrian Hunter int perf_read_tsc_conversion(const struct perf_event_mmap_page *pc, 162a28e230SAdrian Hunter struct perf_tsc_conversion *tc); 170b437860SAdrian Hunter 180b437860SAdrian Hunter u64 perf_time_to_tsc(u64 ns, struct perf_tsc_conversion *tc); 190b437860SAdrian Hunter u64 tsc_to_perf_time(u64 cyc, struct perf_tsc_conversion *tc); 20a6a69db4SAdrian Hunter u64 rdtsc(void); 210b437860SAdrian Hunter 2246bc29b9SAdrian Hunter struct perf_event_mmap_page; 2346bc29b9SAdrian Hunter struct perf_tool; 2446bc29b9SAdrian Hunter struct machine; 2546bc29b9SAdrian Hunter 2646bc29b9SAdrian Hunter int perf_event__synth_time_conv(const struct perf_event_mmap_page *pc, 2746bc29b9SAdrian Hunter struct perf_tool *tool, 2846bc29b9SAdrian Hunter perf_event__handler_t process, 2946bc29b9SAdrian Hunter struct machine *machine); 3046bc29b9SAdrian Hunter 310b437860SAdrian Hunter #endif 32