Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Vincenzo Frascino <vincenzo.frascino@arm.com>
To: linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org,
	clang-built-linux@googlegroups.com, x86@kernel.org
Cc: Nick Desaulniers <ndesaulniers@google.com>,
	Dmitry Safonov <0x7f454c46@gmail.com>,
	Kees Cook <keescook@chromium.org>, Arnd Bergmann <arnd@arndb.de>,
	Stephen Boyd <sboyd@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Mark Salyzyn <salyzyn@android.com>,
	Paul Burton <paul.burton@mips.com>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Andy Lutomirski <luto@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Peter Collingbourne <pcc@google.com>,
	Andrei Vagin <avagin@openvz.org>
Subject: [PATCH v2 19/20] lib: vdso: Enable common headers
Date: Fri,  6 Mar 2020 13:32:41 +0000	[thread overview]
Message-ID: <20200306133242.26279-20-vincenzo.frascino@arm.com> (raw)
In-Reply-To: <20200306133242.26279-1-vincenzo.frascino@arm.com>

The vDSO library should only include the necessary headers required for
a userspace library (UAPI and a minimal set of kernel headers). To make
this possible it is necessary to isolate from the kernel headers the
common parts that are strictly necessary to build the library.

Refactor the unified vdso code to use the common headers.

Cc: Andy Lutomirski <luto@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/vdso/datapage.h | 32 +++++++++++++++++++++++++++++---
 lib/vdso/gettimeofday.c | 21 ---------------------
 2 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/include/vdso/datapage.h b/include/vdso/datapage.h
index c5f347cc5e55..21842a73cbcf 100644
--- a/include/vdso/datapage.h
+++ b/include/vdso/datapage.h
@@ -4,9 +4,19 @@
 
 #ifndef __ASSEMBLY__
 
-#include <linux/bits.h>
-#include <linux/time.h>
-#include <linux/types.h>
+#include <linux/compiler.h>
+#include <uapi/linux/time.h>
+#include <uapi/linux/types.h>
+#include <uapi/asm-generic/errno-base.h>
+
+#include <common/bits.h>
+#include <common/ktime.h>
+#include <common/limits.h>
+#include <common/math64.h>
+#include <common/processor.h>
+#include <common/time.h>
+#include <common/time32.h>
+#include <common/time64.h>
 
 #define VDSO_BASES	(CLOCK_TAI + 1)
 #define VDSO_HRES	(BIT(CLOCK_REALTIME)		| \
@@ -101,6 +111,22 @@ struct vdso_data {
  */
 extern struct vdso_data _vdso_data[CS_BASES] __attribute__((visibility("hidden")));
 
+/*
+ * The generic vDSO implementation requires that gettimeofday.h
+ * provides:
+ * - __arch_get_vdso_data(): to get the vdso datapage.
+ * - __arch_get_hw_counter(): to get the hw counter based on the
+ *   clock_mode.
+ * - gettimeofday_fallback(): fallback for gettimeofday.
+ * - clock_gettime_fallback(): fallback for clock_gettime.
+ * - clock_getres_fallback(): fallback for clock_getres.
+ */
+#ifdef ENABLE_COMPAT_VDSO
+#include <asm/vdso/compat_gettimeofday.h>
+#else
+#include <asm/vdso/gettimeofday.h>
+#endif /* ENABLE_COMPAT_VDSO */
+
 #endif /* !__ASSEMBLY__ */
 
 #endif /* __VDSO_DATAPAGE_H */
diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
index f8b8ec5e63ac..e3244f74feea 100644
--- a/lib/vdso/gettimeofday.c
+++ b/lib/vdso/gettimeofday.c
@@ -2,30 +2,9 @@
 /*
  * Generic userspace implementations of gettimeofday() and similar.
  */
-#include <linux/compiler.h>
-#include <linux/math64.h>
-#include <linux/time.h>
-#include <linux/kernel.h>
-#include <linux/hrtimer_defs.h>
 #include <vdso/datapage.h>
 #include <vdso/helpers.h>
 
-/*
- * The generic vDSO implementation requires that gettimeofday.h
- * provides:
- * - __arch_get_vdso_data(): to get the vdso datapage.
- * - __arch_get_hw_counter(): to get the hw counter based on the
- *   clock_mode.
- * - gettimeofday_fallback(): fallback for gettimeofday.
- * - clock_gettime_fallback(): fallback for clock_gettime.
- * - clock_getres_fallback(): fallback for clock_getres.
- */
-#ifdef ENABLE_COMPAT_VDSO
-#include <asm/vdso/compat_gettimeofday.h>
-#else
-#include <asm/vdso/gettimeofday.h>
-#endif /* ENABLE_COMPAT_VDSO */
-
 #ifndef vdso_calc_delta
 /*
  * Default implementation which works for all sane clocksources. That
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-03-06 13:38 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-06 13:32 [PATCH v2 00/20] Introduce common headers Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 01/20] linux/const.h: Extract common header for vDSO Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 02/20] linux/bits.h: " Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 03/20] linux/limits.h: " Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 04/20] linux/math64.h: " Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 05/20] linux/time.h: " Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 06/20] linux/time32.h: " Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 07/20] linux/time64.h: " Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 08/20] linux/jiffies.h: " Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 09/20] linux/ktime.h: " Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 10/20] common: Introduce processor.h Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 11/20] linux/elfnote.h: Replace elf.h with UAPI equivalent Vincenzo Frascino
2020-03-07  1:21   ` kbuild test robot
2020-03-06 13:32 ` [PATCH v2 12/20] arm64: Introduce asm/common/processor.h Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 13/20] arm64: vdso: Include common headers in the vdso library Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 14/20] arm64: vdso32: " Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 15/20] arm64: Introduce asm/common/arch_timer.h Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 16/20] mips: vdso: Enable mips to use common headers Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 17/20] x86: vdso: Enable x86 " Vincenzo Frascino
2020-03-06 13:32 ` [PATCH v2 18/20] arm: vdso: Enable arm " Vincenzo Frascino
2020-03-06 13:32 ` Vincenzo Frascino [this message]
2020-03-06 13:32 ` [PATCH v2 20/20] arm64: vdso32: Enable Clang Compilation Vincenzo Frascino
2020-03-10  1:40   ` Nathan Chancellor
2020-03-13 12:01     ` Vincenzo Frascino
2020-03-06 16:04 ` [PATCH v2 00/20] Introduce common headers Andy Lutomirski
2020-03-09 11:07   ` Vincenzo Frascino
2020-03-09 12:24     ` Mark Rutland
2020-03-09 19:23       ` Thomas Gleixner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200306133242.26279-20-vincenzo.frascino@arm.com \
    --to=vincenzo.frascino@arm.com \
    --cc=0x7f454c46@gmail.com \
    --cc=arnd@arndb.de \
    --cc=avagin@openvz.org \
    --cc=bp@alien8.de \
    --cc=catalin.marinas@arm.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=keescook@chromium.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=ndesaulniers@google.com \
    --cc=paul.burton@mips.com \
    --cc=pcc@google.com \
    --cc=salyzyn@android.com \
    --cc=sboyd@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=will.deacon@arm.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox