root/kernel/time/timekeeping_internal.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. clocksource_delta
  2. clocksource_delta

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _TIMEKEEPING_INTERNAL_H
   3 #define _TIMEKEEPING_INTERNAL_H
   4 /*
   5  * timekeeping debug functions
   6  */
   7 #include <linux/clocksource.h>
   8 #include <linux/time.h>
   9 
  10 #ifdef CONFIG_DEBUG_FS
  11 extern void tk_debug_account_sleep_time(const struct timespec64 *t);
  12 #else
  13 #define tk_debug_account_sleep_time(x)
  14 #endif
  15 
  16 #ifdef CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE
  17 static inline u64 clocksource_delta(u64 now, u64 last, u64 mask)
  18 {
  19         u64 ret = (now - last) & mask;
  20 
  21         /*
  22          * Prevent time going backwards by checking the MSB of mask in
  23          * the result. If set, return 0.
  24          */
  25         return ret & ~(mask >> 1) ? 0 : ret;
  26 }
  27 #else
  28 static inline u64 clocksource_delta(u64 now, u64 last, u64 mask)
  29 {
  30         return (now - last) & mask;
  31 }
  32 #endif
  33 
  34 #endif /* _TIMEKEEPING_INTERNAL_H */

/* [<][>][^][v][top][bottom][index][help] */