lkml.org 
[lkml]   [2020]   [Mar]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 25/26] lib: vdso: Enable common headers
    Date
    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 | 33 ++++++++++++++++++++++++++++++---
    lib/vdso/gettimeofday.c | 22 ----------------------
    2 files changed, 30 insertions(+), 25 deletions(-)

    diff --git a/include/vdso/datapage.h b/include/vdso/datapage.h
    index 30c4cb0428d1..5cbc9fcbfd45 100644
    --- a/include/vdso/datapage.h
    +++ b/include/vdso/datapage.h
    @@ -4,9 +4,20 @@

    #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 <vdso/bits.h>
    +#include <vdso/clocksource.h>
    +#include <vdso/ktime.h>
    +#include <vdso/limits.h>
    +#include <vdso/math64.h>
    +#include <vdso/processor.h>
    +#include <vdso/time.h>
    +#include <vdso/time32.h>
    +#include <vdso/time64.h>

    #define VDSO_BASES (CLOCK_TAI + 1)
    #define VDSO_HRES (BIT(CLOCK_REALTIME) | \
    @@ -99,6 +110,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 72d282ffd156..a2909af4b924 100644
    --- a/lib/vdso/gettimeofday.c
    +++ b/lib/vdso/gettimeofday.c
    @@ -2,31 +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 <linux/clocksource.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
    \
     
     \ /
      Last update: 2020-03-20 15:56    [W:4.144 / U:0.248 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site