| .. | .. |
|---|
| 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] \ |
|---|