Loading...
1/* SPDX-License-Identifier: GPL-2.0 */
2/* x86-specific clocksource additions */
3
4#ifndef _ASM_X86_CLOCKSOURCE_H
5#define _ASM_X86_CLOCKSOURCE_H
6
7#define VCLOCK_NONE 0 /* No vDSO clock available. */
8#define VCLOCK_TSC 1 /* vDSO should use vread_tsc. */
9#define VCLOCK_PVCLOCK 2 /* vDSO should use vread_pvclock. */
10#define VCLOCK_HVCLOCK 3 /* vDSO should use vread_hvclock. */
11#define VCLOCK_MAX 3
12
13struct arch_clocksource_data {
14 int vclock_mode;
15};
16
17#endif /* _ASM_X86_CLOCKSOURCE_H */
1/* SPDX-License-Identifier: GPL-2.0 */
2/* x86-specific clocksource additions */
3
4#ifndef _ASM_X86_CLOCKSOURCE_H
5#define _ASM_X86_CLOCKSOURCE_H
6
7#include <asm/vdso/clocksource.h>
8
9extern unsigned int vclocks_used;
10
11static inline bool vclock_was_used(int vclock)
12{
13 return READ_ONCE(vclocks_used) & (1U << vclock);
14}
15
16static inline void vclocks_set_used(unsigned int which)
17{
18 WRITE_ONCE(vclocks_used, READ_ONCE(vclocks_used) | (1 << which));
19}
20
21#endif /* _ASM_X86_CLOCKSOURCE_H */