| .. | .. | 
|---|
| 10 | 10 |  #include <asm/vgtod.h> | 
|---|
| 11 | 11 |  #include <asm/vvar.h> | 
|---|
| 12 | 12 |   | 
|---|
| 13 |  | -int vclocks_used __read_mostly;  | 
|---|
| 14 |  | -  | 
|---|
| 15 | 13 |  DEFINE_VVAR(struct vdso_data, _vdso_data); | 
|---|
| 16 | 14 |  /* | 
|---|
| 17 | 15 |   * Update the vDSO data page to keep in sync with kernel timekeeping. | 
|---|
| .. | .. | 
|---|
| 22 | 20 |  	return _vdso_data; | 
|---|
| 23 | 21 |  } | 
|---|
| 24 | 22 |  #define __arch_get_k_vdso_data __x86_get_k_vdso_data | 
|---|
| 25 |  | -  | 
|---|
| 26 |  | -static __always_inline  | 
|---|
| 27 |  | -int __x86_get_clock_mode(struct timekeeper *tk)  | 
|---|
| 28 |  | -{  | 
|---|
| 29 |  | -	int vclock_mode = tk->tkr_mono.clock->archdata.vclock_mode;  | 
|---|
| 30 |  | -  | 
|---|
| 31 |  | -	/* Mark the new vclock used. */  | 
|---|
| 32 |  | -	BUILD_BUG_ON(VCLOCK_MAX >= 32);  | 
|---|
| 33 |  | -	WRITE_ONCE(vclocks_used, READ_ONCE(vclocks_used) | (1 << vclock_mode));  | 
|---|
| 34 |  | -  | 
|---|
| 35 |  | -	return vclock_mode;  | 
|---|
| 36 |  | -}  | 
|---|
| 37 |  | -#define __arch_get_clock_mode __x86_get_clock_mode  | 
|---|
| 38 | 23 |   | 
|---|
| 39 | 24 |  /* The asm-generic header needs to be included after the definitions above */ | 
|---|
| 40 | 25 |  #include <asm-generic/vdso/vsyscall.h> | 
|---|