| .. | .. | 
|---|
 | 1 | +/* SPDX-License-Identifier: GPL-2.0-only */  | 
|---|
| 1 | 2 |  /* | 
|---|
| 2 | 3 |   * vvar.h: Shared vDSO/kernel variable declarations | 
|---|
| 3 | 4 |   * Copyright (c) 2011 Andy Lutomirski | 
|---|
| 4 |  | - * Subject to the GNU General Public License, version 2  | 
|---|
| 5 | 5 |   * | 
|---|
| 6 | 6 |   * A handful of variables are accessible (read-only) from userspace | 
|---|
| 7 | 7 |   * code in the vsyscall page and the vdso.  They are declared here. | 
|---|
| .. | .. | 
|---|
| 19 | 19 |  #ifndef _ASM_X86_VVAR_H | 
|---|
| 20 | 20 |  #define _ASM_X86_VVAR_H | 
|---|
| 21 | 21 |   | 
|---|
| 22 |  | -#if defined(__VVAR_KERNEL_LDS)  | 
|---|
| 23 |  | -  | 
|---|
| 24 |  | -/* The kernel linker script defines its own magic to put vvars in the  | 
|---|
| 25 |  | - * right place.  | 
|---|
 | 22 | +#ifdef EMIT_VVAR  | 
|---|
 | 23 | +/*  | 
|---|
 | 24 | + * EMIT_VVAR() is used by the kernel linker script to put vvars in the  | 
|---|
 | 25 | + * right place. Also, it's used by kernel code to import offsets values.  | 
|---|
| 26 | 26 |   */ | 
|---|
| 27 | 27 |  #define DECLARE_VVAR(offset, type, name) \ | 
|---|
| 28 | 28 |  	EMIT_VVAR(name, offset) | 
|---|
| .. | .. | 
|---|
| 33 | 33 |   | 
|---|
| 34 | 34 |  #define DECLARE_VVAR(offset, type, name)				\ | 
|---|
| 35 | 35 |  	extern type vvar_ ## name[CS_BASES]				\ | 
|---|
| 36 |  | -	__attribute__((visibility("hidden")));  | 
|---|
 | 36 | +	__attribute__((visibility("hidden")));				\  | 
|---|
 | 37 | +	extern type timens_ ## name[CS_BASES]				\  | 
|---|
 | 38 | +	__attribute__((visibility("hidden")));				\  | 
|---|
| 37 | 39 |   | 
|---|
| 38 | 40 |  #define VVAR(name) (vvar_ ## name) | 
|---|
 | 41 | +#define TIMENS(name) (timens_ ## name)  | 
|---|
| 39 | 42 |   | 
|---|
| 40 | 43 |  #define DEFINE_VVAR(type, name)						\ | 
|---|
| 41 | 44 |  	type name[CS_BASES]						\ | 
|---|