Blame view

include/linux/sched_clock.h 1.44 KB
d2912cb15   Thomas Gleixner   treewide: Replace...
1
  /* SPDX-License-Identifier: GPL-2.0-only */
112f38a4a   Russell King   ARM: sched_clock:...
2
3
  /*
   * sched_clock.h: support for extending counters to full 64-bit ns counter
112f38a4a   Russell King   ARM: sched_clock:...
4
   */
38ff87f77   Stephen Boyd   sched_clock: Make...
5
6
  #ifndef LINUX_SCHED_CLOCK
  #define LINUX_SCHED_CLOCK
112f38a4a   Russell King   ARM: sched_clock:...
7

38ff87f77   Stephen Boyd   sched_clock: Make...
8
  #ifdef CONFIG_GENERIC_SCHED_CLOCK
1b86abc1c   Peter Zijlstra   sched_clock: Expo...
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  /**
   * struct clock_read_data - data required to read from sched_clock()
   *
   * @epoch_ns:		sched_clock() value at last update
   * @epoch_cyc:		Clock cycle value at last update.
   * @sched_clock_mask:   Bitmask for two's complement subtraction of non 64bit
   *			clocks.
   * @read_sched_clock:	Current clock source (or dummy source when suspended).
   * @mult:		Multipler for scaled math conversion.
   * @shift:		Shift value for scaled math conversion.
   *
   * Care must be taken when updating this structure; it is read by
   * some very hot code paths. It occupies <=40 bytes and, when combined
   * with the seqcount used to synchronize access, comfortably fits into
   * a 64 byte cache line.
   */
  struct clock_read_data {
  	u64 epoch_ns;
  	u64 epoch_cyc;
  	u64 sched_clock_mask;
  	u64 (*read_sched_clock)(void);
  	u32 mult;
  	u32 shift;
  };
  
  extern struct clock_read_data *sched_clock_read_begin(unsigned int *seq);
  extern int sched_clock_read_retry(unsigned int seq);
5d2a4e91a   Pavel Tatashin   sched/clock: Move...
36
  extern void generic_sched_clock_init(void);
38ff87f77   Stephen Boyd   sched_clock: Make...
37

e7e3ff1bf   Stephen Boyd   sched_clock: Add ...
38
39
  extern void sched_clock_register(u64 (*read)(void), int bits,
  				 unsigned long rate);
364eba4b3   Daniel Lezcano   time: Define dumm...
40
  #else
5d2a4e91a   Pavel Tatashin   sched/clock: Move...
41
  static inline void generic_sched_clock_init(void) { }
364eba4b3   Daniel Lezcano   time: Define dumm...
42
43
44
45
  
  static inline void sched_clock_register(u64 (*read)(void), int bits,
  					unsigned long rate)
  {
364eba4b3   Daniel Lezcano   time: Define dumm...
46
47
  }
  #endif
211baa701   Russell King   ARM: sched_clock:...
48

112f38a4a   Russell King   ARM: sched_clock:...
49
  #endif