Merge tag 'ktime-get-clock-ts64-for-ptp' into timers/ptp
Pull the base implementation of ktime_get_clock_ts64() for PTP, which contains a temporary CLOCK_AUX* workaround. That was created to allow integration of depending changes into the networking tree. The workaround is going to be removed in a subsequent change in the timekeeping tree. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
@@ -44,6 +44,7 @@ extern void ktime_get_ts64(struct timespec64 *ts);
|
||||
extern void ktime_get_real_ts64(struct timespec64 *tv);
|
||||
extern void ktime_get_coarse_ts64(struct timespec64 *ts);
|
||||
extern void ktime_get_coarse_real_ts64(struct timespec64 *ts);
|
||||
extern void ktime_get_clock_ts64(clockid_t id, struct timespec64 *ts);
|
||||
|
||||
/* Multigrain timestamp interfaces */
|
||||
extern void ktime_get_coarse_real_ts64_mg(struct timespec64 *ts);
|
||||
@@ -356,4 +357,13 @@ void read_persistent_wall_and_boot_offset(struct timespec64 *wall_clock,
|
||||
extern int update_persistent_clock64(struct timespec64 now);
|
||||
#endif
|
||||
|
||||
/* Temporary workaround to avoid merge dependencies and cross tree messes */
|
||||
#ifndef CLOCK_AUX
|
||||
#define CLOCK_AUX MAX_CLOCKS
|
||||
#define MAX_AUX_CLOCKS 8
|
||||
#define CLOCK_AUX_LAST (CLOCK_AUX + MAX_AUX_CLOCKS - 1)
|
||||
|
||||
static inline bool ktime_get_aux_ts64(clockid_t id, struct timespec64 *kt) { return false; }
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1640,6 +1640,40 @@ void ktime_get_raw_ts64(struct timespec64 *ts)
|
||||
}
|
||||
EXPORT_SYMBOL(ktime_get_raw_ts64);
|
||||
|
||||
/**
|
||||
* ktime_get_clock_ts64 - Returns time of a clock in a timespec
|
||||
* @id: POSIX clock ID of the clock to read
|
||||
* @ts: Pointer to the timespec64 to be set
|
||||
*
|
||||
* The timestamp is invalidated (@ts->sec is set to -1) if the
|
||||
* clock @id is not available.
|
||||
*/
|
||||
void ktime_get_clock_ts64(clockid_t id, struct timespec64 *ts)
|
||||
{
|
||||
/* Invalidate time stamp */
|
||||
ts->tv_sec = -1;
|
||||
ts->tv_nsec = 0;
|
||||
|
||||
switch (id) {
|
||||
case CLOCK_REALTIME:
|
||||
ktime_get_real_ts64(ts);
|
||||
return;
|
||||
case CLOCK_MONOTONIC:
|
||||
ktime_get_ts64(ts);
|
||||
return;
|
||||
case CLOCK_MONOTONIC_RAW:
|
||||
ktime_get_raw_ts64(ts);
|
||||
return;
|
||||
case CLOCK_AUX ... CLOCK_AUX_LAST:
|
||||
if (IS_ENABLED(CONFIG_POSIX_AUX_CLOCKS))
|
||||
ktime_get_aux_ts64(id, ts);
|
||||
return;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ktime_get_clock_ts64);
|
||||
|
||||
/**
|
||||
* timekeeping_valid_for_hres - Check if timekeeping is suitable for hres
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user