Linux-MIPS Archive on lore.kernel.org
 help / color / 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: catalin.marinas@arm.com, will.deacon@arm.com, arnd@arndb.de,
	linux@armlinux.org.uk, paul.burton@mips.com, tglx@linutronix.de,
	luto@kernel.org, mingo@redhat.com, bp@alien8.de,
	sboyd@kernel.org, salyzyn@android.com, pcc@google.com,
	0x7f454c46@gmail.com, ndesaulniers@google.com, avagin@openvz.org
Subject: [PATCH 18/19] lib: vdso: Enable common headers
Date: Thu, 13 Feb 2020 16:16:13 +0000
Message-ID: <20200213161614.23246-19-vincenzo.frascino@arm.com> (raw)
In-Reply-To: <20200213161614.23246-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.0


  parent reply index

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-13 16:15 [PATCH 00/19] Introduce " Vincenzo Frascino
2020-02-13 16:15 ` [PATCH 01/19] linux/const.h: Extract common header for vDSO Vincenzo Frascino
2020-02-13 16:15 ` [PATCH 02/19] linux/bits.h: " Vincenzo Frascino
2020-02-13 16:15 ` [PATCH 03/19] linux/limits.h: " Vincenzo Frascino
2020-02-13 16:15 ` [PATCH 04/19] linux/math64.h: " Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 05/19] linux/time.h: " Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 06/19] linux/time32.h: " Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 07/19] linux/time64.h: " Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 08/19] linux/jiffies.h: " Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 09/19] linux/ktime.h: " Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 10/19] common: Introduce processor.h Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 11/19] linux/elfnote.h: Replace elf.h with UAPI equivalent Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 12/19] arm64: Introduce asm/common/processor.h Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 13/19] arm64: vdso: Include common headers in the vdso library Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 14/19] arm64: vdso32: " Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 15/19] mips: vdso: Enable mips to use common headers Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 16/19] x86: vdso: Enable x86 " Vincenzo Frascino
2020-02-13 16:16 ` [PATCH 17/19] arm: vdso: Enable arm " Vincenzo Frascino
2020-02-13 16:16 ` Vincenzo Frascino [this message]
2020-02-13 16:16 ` [PATCH 19/19] arm64: vdso32: Enable Clang Compilation Vincenzo Frascino
2020-02-13 18:44   ` Nathan Chancellor
2020-02-17 12:26     ` Vincenzo Frascino
2020-02-17 16:46       ` Will Deacon
2020-02-17 22:39         ` Ard Biesheuvel
2020-02-18 13:03           ` Vincenzo Frascino

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=20200213161614.23246-19-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=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

Linux-MIPS Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-mips/0 linux-mips/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-mips linux-mips/ https://lore.kernel.org/linux-mips \
		linux-mips@vger.kernel.org
	public-inbox-index linux-mips

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-mips


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git