1 /* SPDX-License-Identifier: GPL-2.0-only */ << 2 /* 1 /* 3 * sched_clock.h: support for extending counte 2 * sched_clock.h: support for extending counters to full 64-bit ns counter >> 3 * >> 4 * This program is free software; you can redistribute it and/or modify >> 5 * it under the terms of the GNU General Public License version 2 as >> 6 * published by the Free Software Foundation. 4 */ 7 */ 5 #ifndef LINUX_SCHED_CLOCK 8 #ifndef LINUX_SCHED_CLOCK 6 #define LINUX_SCHED_CLOCK 9 #define LINUX_SCHED_CLOCK 7 10 8 #include <linux/types.h> << 9 << 10 #ifdef CONFIG_GENERIC_SCHED_CLOCK 11 #ifdef CONFIG_GENERIC_SCHED_CLOCK 11 /** !! 12 extern void sched_clock_postinit(void); 12 * struct clock_read_data - data required to r << 13 * << 14 * @epoch_ns: sched_clock() value at << 15 * @epoch_cyc: Clock cycle value at l << 16 * @sched_clock_mask: Bitmask for two's comp << 17 * clocks. << 18 * @read_sched_clock: Current clock source ( << 19 * @mult: Multiplier for scaled << 20 * @shift: Shift value for scaled << 21 * << 22 * Care must be taken when updating this struc << 23 * some very hot code paths. It occupies <=40 << 24 * with the seqcount used to synchronize acces << 25 * a 64 byte cache line. << 26 */ << 27 struct clock_read_data { << 28 u64 epoch_ns; << 29 u64 epoch_cyc; << 30 u64 sched_clock_mask; << 31 u64 (*read_sched_clock)(void); << 32 u32 mult; << 33 u32 shift; << 34 }; << 35 << 36 extern struct clock_read_data *sched_clock_rea << 37 extern int sched_clock_read_retry(unsigned int << 38 << 39 extern void generic_sched_clock_init(void); << 40 13 41 extern void sched_clock_register(u64 (*read)(v 14 extern void sched_clock_register(u64 (*read)(void), int bits, 42 unsigned long 15 unsigned long rate); 43 #else 16 #else 44 static inline void generic_sched_clock_init(vo !! 17 static inline void sched_clock_postinit(void) { } 45 18 46 static inline void sched_clock_register(u64 (* 19 static inline void sched_clock_register(u64 (*read)(void), int bits, 47 unsign 20 unsigned long rate) 48 { 21 { >> 22 ; 49 } 23 } 50 #endif 24 #endif 51 25 52 #endif 26 #endif 53 27
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.