mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge branch into tip/master: 'timers/vdso'
# New commits in timers/vdso:
ecacc9c8d3 ("vdso: Rename HAVE_GENERIC_VDSO to VDSO_DATASTORE")
52447180f4 ("vdso: Drop HAVE_GENERIC_VDSO from architecture kconfig files")
faeff8d416 ("vdso: Automatically select HAVE_GENERIC_VDSO if necessary")
8c0015572c ("MIPS: vdso: Stop using CONFIG_HAVE_GENERIC_VDSO")
a924263758 ("vdso: Remove the dependency on HAVE_GENERIC_VDSO from ARCH_HAS_VDSO_ARCH_DATA")
2558084d2b ("futex: Remove dependency on HAVE_GENERIC_VDSO from FUTEX_ROBUST_UNLOCK")
369cecd238 ("vdso/gettimeofday: Verify COMPAT_32BIT_TIME interactions")
2700297b69 ("sparc: vdso: Respect COMPAT_32BIT_TIME")
377e3f2d41 ("MIPS: VDSO: Respect COMPAT_32BIT_TIME")
e01abc70af ("powerpc/vdso: Respect COMPAT_32BIT_TIME")
95216f4647 ("ARM: VDSO: Respect COMPAT_32BIT_TIME")
abb1537388 ("arm64: vdso32: Respect COMPAT_32BIT_TIME")
1a4660da31 ("x86/vdso: Respect COMPAT_32BIT_TIME")
f8b9467725 ("vdso/gettimeofday: Validate system call existence for time() and gettimeofday()")
dce21fb3d5 ("time: Respect COMPAT_32BIT_TIME for old time type functions")
0b50763e84 ("vdso/datastore: Simplify the mapping logic for VDSO_TIME_PAGE_OFFSET")
c27e727c9a ("vdso/datastore: Allow prefaulting by mlockall()")
9ab500d47f ("vdso/datastore: Explicitly prevent remote access to timens vvar page")
43648f9f3a ("vdso/datastore: Map zeroed pages for unavailable data")
7557273419 ("vdso/datastore: Map pages in terms of the faults pgoff")
ff868f43eb ("vdso/datastore: Rename data pages variable")
02475538be ("vdso: Replace __ASSEMBLY__ with __ASSEMBLER__ in header files")
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -1696,7 +1696,6 @@ config HAVE_SPARSE_SYSCALL_NR
|
||||
related optimizations for a given architecture.
|
||||
|
||||
config ARCH_HAS_VDSO_ARCH_DATA
|
||||
depends on HAVE_GENERIC_VDSO
|
||||
bool
|
||||
|
||||
config ARCH_HAS_VDSO_TIME_DATA
|
||||
|
||||
@@ -924,7 +924,6 @@ config VDSO
|
||||
bool "Enable VDSO for acceleration of some system calls"
|
||||
depends on AEABI && MMU && CPU_V7
|
||||
default y if ARM_ARCH_TIMER
|
||||
select HAVE_GENERIC_VDSO
|
||||
select GENERIC_GETTIMEOFDAY
|
||||
help
|
||||
Place in the process address space an ELF shared object
|
||||
|
||||
@@ -70,9 +70,11 @@ VERSION
|
||||
{
|
||||
LINUX_2.6 {
|
||||
global:
|
||||
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||
__vdso_clock_gettime;
|
||||
__vdso_gettimeofday;
|
||||
__vdso_clock_getres;
|
||||
#endif /* CONFIG_COMPAT_32BIT_TIME */
|
||||
__vdso_clock_gettime64;
|
||||
__vdso_clock_getres_time64;
|
||||
local: *;
|
||||
|
||||
@@ -10,16 +10,17 @@
|
||||
#include <asm/unwind.h>
|
||||
#include <vdso/gettime.h>
|
||||
|
||||
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||
int __vdso_clock_gettime(clockid_t clock,
|
||||
struct old_timespec32 *ts)
|
||||
{
|
||||
return __cvdso_clock_gettime32(clock, ts);
|
||||
}
|
||||
|
||||
int __vdso_clock_gettime64(clockid_t clock,
|
||||
struct __kernel_timespec *ts)
|
||||
int __vdso_clock_getres(clockid_t clock_id,
|
||||
struct old_timespec32 *res)
|
||||
{
|
||||
return __cvdso_clock_gettime(clock, ts);
|
||||
return __cvdso_clock_getres_time32(clock_id, res);
|
||||
}
|
||||
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv,
|
||||
@@ -27,11 +28,12 @@ int __vdso_gettimeofday(struct __kernel_old_timeval *tv,
|
||||
{
|
||||
return __cvdso_gettimeofday(tv, tz);
|
||||
}
|
||||
#endif /* CONFIG_COMPAT_32BIT_TIME */
|
||||
|
||||
int __vdso_clock_getres(clockid_t clock_id,
|
||||
struct old_timespec32 *res)
|
||||
int __vdso_clock_gettime64(clockid_t clock,
|
||||
struct __kernel_timespec *ts)
|
||||
{
|
||||
return __cvdso_clock_getres_time32(clock_id, res);
|
||||
return __cvdso_clock_gettime(clock, ts);
|
||||
}
|
||||
|
||||
int __vdso_clock_getres_time64(clockid_t clock_id, struct __kernel_timespec *res)
|
||||
|
||||
@@ -229,7 +229,6 @@ config ARM64
|
||||
select HAVE_SYSCALL_TRACEPOINTS
|
||||
select HAVE_KPROBES
|
||||
select HAVE_KRETPROBES
|
||||
select HAVE_GENERIC_VDSO
|
||||
select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU
|
||||
select HOTPLUG_SMT if HOTPLUG_CPU
|
||||
select IRQ_DOMAIN
|
||||
|
||||
@@ -82,9 +82,11 @@ VERSION
|
||||
{
|
||||
LINUX_2.6 {
|
||||
global:
|
||||
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||
__vdso_clock_gettime;
|
||||
__vdso_gettimeofday;
|
||||
__vdso_clock_getres;
|
||||
#endif /* CONFIG_COMPAT_32BIT_TIME */
|
||||
__vdso_clock_gettime64;
|
||||
__vdso_clock_getres_time64;
|
||||
local: *;
|
||||
|
||||
@@ -8,16 +8,17 @@
|
||||
#define BUILD_VDSO32_64
|
||||
#include <vdso/gettime.h>
|
||||
|
||||
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||
int __vdso_clock_gettime(clockid_t clock,
|
||||
struct old_timespec32 *ts)
|
||||
{
|
||||
return __cvdso_clock_gettime32(clock, ts);
|
||||
}
|
||||
|
||||
int __vdso_clock_gettime64(clockid_t clock,
|
||||
struct __kernel_timespec *ts)
|
||||
int __vdso_clock_getres(clockid_t clock_id,
|
||||
struct old_timespec32 *res)
|
||||
{
|
||||
return __cvdso_clock_gettime(clock, ts);
|
||||
return __cvdso_clock_getres_time32(clock_id, res);
|
||||
}
|
||||
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv,
|
||||
@@ -25,11 +26,12 @@ int __vdso_gettimeofday(struct __kernel_old_timeval *tv,
|
||||
{
|
||||
return __cvdso_gettimeofday(tv, tz);
|
||||
}
|
||||
#endif /* CONFIG_COMPAT_32BIT_TIME */
|
||||
|
||||
int __vdso_clock_getres(clockid_t clock_id,
|
||||
struct old_timespec32 *res)
|
||||
int __vdso_clock_gettime64(clockid_t clock,
|
||||
struct __kernel_timespec *ts)
|
||||
{
|
||||
return __cvdso_clock_getres_time32(clock_id, res);
|
||||
return __cvdso_clock_gettime(clock, ts);
|
||||
}
|
||||
|
||||
int __vdso_clock_getres_time64(clockid_t clock_id, struct __kernel_timespec *res)
|
||||
|
||||
@@ -153,7 +153,6 @@ config LOONGARCH
|
||||
select HAVE_FUNCTION_GRAPH_TRACER
|
||||
select HAVE_FUNCTION_TRACER
|
||||
select HAVE_GCC_PLUGINS
|
||||
select HAVE_GENERIC_VDSO
|
||||
select HAVE_HW_BREAKPOINT if PERF_EVENTS
|
||||
select HAVE_IOREMAP_PROT
|
||||
select HAVE_IRQ_EXIT_ON_IRQ_STACK
|
||||
@@ -213,6 +212,7 @@ config LOONGARCH
|
||||
select TRACE_IRQFLAGS_SUPPORT
|
||||
select USE_PERCPU_NUMA_NODE_ID
|
||||
select USER_STACKTRACE_SUPPORT
|
||||
select VDSO_DATASTORE
|
||||
select VDSO_GETRANDOM
|
||||
select ZONE_DMA32 if 64BIT
|
||||
|
||||
|
||||
@@ -3163,7 +3163,6 @@ config MIPS_EXTERNAL_TIMER
|
||||
config MIPS_GENERIC_GETTIMEOFDAY
|
||||
def_bool y
|
||||
select GENERIC_GETTIMEOFDAY
|
||||
select HAVE_GENERIC_VDSO
|
||||
depends on CSRC_R4K || CLKSRC_MIPS_GIC
|
||||
# GCC (at least up to version 9.2) appears to emit function calls that make use
|
||||
# of the GOT when targeting microMIPS, which we can't use in the VDSO due to
|
||||
|
||||
@@ -129,7 +129,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
|
||||
* This ensures that when the kernel updates the VDSO data userland
|
||||
* will observe it without requiring cache invalidations.
|
||||
*/
|
||||
if (cpu_has_dc_aliases && IS_ENABLED(CONFIG_HAVE_GENERIC_VDSO)) {
|
||||
if (cpu_has_dc_aliases && IS_ENABLED(CONFIG_MIPS_GENERIC_GETTIMEOFDAY)) {
|
||||
base = __ALIGN_MASK(base, shm_align_mask);
|
||||
base += ((unsigned long)vdso_k_time_data - gic_size) & shm_align_mask;
|
||||
}
|
||||
@@ -137,7 +137,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
|
||||
data_addr = base + gic_size;
|
||||
vdso_addr = data_addr + VDSO_NR_PAGES * PAGE_SIZE;
|
||||
|
||||
if (IS_ENABLED(CONFIG_HAVE_GENERIC_VDSO)) {
|
||||
if (IS_ENABLED(CONFIG_MIPS_GENERIC_GETTIMEOFDAY)) {
|
||||
vma = vdso_install_vvar_mapping(mm, data_addr);
|
||||
if (IS_ERR(vma)) {
|
||||
ret = PTR_ERR(vma);
|
||||
|
||||
@@ -97,9 +97,11 @@ VERSION
|
||||
LINUX_2.6 {
|
||||
#ifdef CONFIG_GENERIC_GETTIMEOFDAY
|
||||
global:
|
||||
#if _MIPS_SIM == _MIPS_SIM_ABI64 || defined(CONFIG_COMPAT_32BIT_TIME)
|
||||
__vdso_clock_gettime;
|
||||
__vdso_gettimeofday;
|
||||
__vdso_clock_getres;
|
||||
#endif
|
||||
#if _MIPS_SIM != _MIPS_SIM_ABI64
|
||||
__vdso_clock_gettime64;
|
||||
__vdso_clock_getres_time64;
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#include <vdso/gettime.h>
|
||||
|
||||
#if _MIPS_SIM != _MIPS_SIM_ABI64
|
||||
|
||||
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||
int __vdso_clock_gettime(clockid_t clock,
|
||||
struct old_timespec32 *ts)
|
||||
{
|
||||
@@ -29,6 +31,7 @@ int __vdso_clock_getres(clockid_t clock_id,
|
||||
{
|
||||
return __cvdso_clock_getres_time32(clock_id, res);
|
||||
}
|
||||
#endif /* CONFIG_COMPAT_32BIT_TIME */
|
||||
|
||||
int __vdso_clock_gettime64(clockid_t clock,
|
||||
struct __kernel_timespec *ts)
|
||||
|
||||
@@ -256,7 +256,6 @@ config PPC
|
||||
select HAVE_FUNCTION_GRAPH_TRACER
|
||||
select HAVE_FUNCTION_TRACER if !COMPILE_TEST && (PPC64 || (PPC32 && CC_IS_GCC))
|
||||
select HAVE_GCC_PLUGINS
|
||||
select HAVE_GENERIC_VDSO
|
||||
select HAVE_HARDLOCKUP_DETECTOR_ARCH if PPC_BOOK3S_64 && SMP
|
||||
select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI
|
||||
select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx)
|
||||
@@ -328,6 +327,7 @@ config PPC
|
||||
select SYSCTL_EXCEPTION_TRACE
|
||||
select THREAD_INFO_IN_TASK
|
||||
select TRACE_IRQFLAGS_SUPPORT
|
||||
select VDSO_DATASTORE
|
||||
select VDSO_GETRANDOM
|
||||
#
|
||||
# Please keep this list sorted alphabetically.
|
||||
|
||||
@@ -67,9 +67,11 @@
|
||||
* int __kernel_gettimeofday(struct timeval *tv, struct timezone *tz);
|
||||
*
|
||||
*/
|
||||
#if defined(__powerpc64__) || defined(CONFIG_COMPAT_32BIT_TIME)
|
||||
V_FUNCTION_BEGIN(__kernel_gettimeofday)
|
||||
cvdso_call __c_kernel_gettimeofday
|
||||
V_FUNCTION_END(__kernel_gettimeofday)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Exact prototype of clock_gettime()
|
||||
@@ -77,9 +79,11 @@ V_FUNCTION_END(__kernel_gettimeofday)
|
||||
* int __kernel_clock_gettime(clockid_t clock_id, struct timespec *tp);
|
||||
*
|
||||
*/
|
||||
#if defined(__powerpc64__) || defined(CONFIG_COMPAT_32BIT_TIME)
|
||||
V_FUNCTION_BEGIN(__kernel_clock_gettime)
|
||||
cvdso_call __c_kernel_clock_gettime
|
||||
V_FUNCTION_END(__kernel_clock_gettime)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Exact prototype of clock_gettime64()
|
||||
@@ -99,9 +103,11 @@ V_FUNCTION_END(__kernel_clock_gettime64)
|
||||
* int __kernel_clock_getres(clockid_t clock_id, struct timespec *res);
|
||||
*
|
||||
*/
|
||||
#if defined(__powerpc64__) || defined(CONFIG_COMPAT_32BIT_TIME)
|
||||
V_FUNCTION_BEGIN(__kernel_clock_getres)
|
||||
cvdso_call __c_kernel_clock_getres
|
||||
V_FUNCTION_END(__kernel_clock_getres)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Exact prototype of clock_getres_time64()
|
||||
@@ -122,6 +128,8 @@ V_FUNCTION_END(__kernel_clock_getres_time64)
|
||||
* time_t time(time *t);
|
||||
*
|
||||
*/
|
||||
#if defined(__powerpc64__) || defined(CONFIG_COMPAT_32BIT_TIME)
|
||||
V_FUNCTION_BEGIN(__kernel_time)
|
||||
cvdso_call __c_kernel_time call_time=1
|
||||
V_FUNCTION_END(__kernel_time)
|
||||
#endif
|
||||
|
||||
@@ -119,13 +119,15 @@ VERSION
|
||||
{
|
||||
VDSO_VERSION_STRING {
|
||||
global:
|
||||
__kernel_get_syscall_map;
|
||||
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||
__kernel_gettimeofday;
|
||||
__kernel_clock_gettime;
|
||||
__kernel_clock_gettime64;
|
||||
__kernel_clock_getres;
|
||||
__kernel_clock_getres_time64;
|
||||
__kernel_time;
|
||||
#endif /* CONFIG_COMPAT_32BIT_TIME */
|
||||
__kernel_get_syscall_map;
|
||||
__kernel_clock_gettime64;
|
||||
__kernel_clock_getres_time64;
|
||||
__kernel_get_tbfreq;
|
||||
__kernel_sync_dicache;
|
||||
__kernel_sigtramp32;
|
||||
|
||||
@@ -18,23 +18,25 @@ int __c_kernel_clock_getres(clockid_t clock_id, struct __kernel_timespec *res,
|
||||
return __cvdso_clock_getres_data(vd, clock_id, res);
|
||||
}
|
||||
#else
|
||||
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||
int __c_kernel_clock_gettime(clockid_t clock, struct old_timespec32 *ts,
|
||||
const struct vdso_time_data *vd)
|
||||
{
|
||||
return __cvdso_clock_gettime32_data(vd, clock, ts);
|
||||
}
|
||||
|
||||
int __c_kernel_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts,
|
||||
const struct vdso_time_data *vd)
|
||||
{
|
||||
return __cvdso_clock_gettime_data(vd, clock, ts);
|
||||
}
|
||||
|
||||
int __c_kernel_clock_getres(clockid_t clock_id, struct old_timespec32 *res,
|
||||
const struct vdso_time_data *vd)
|
||||
{
|
||||
return __cvdso_clock_getres_time32_data(vd, clock_id, res);
|
||||
}
|
||||
#endif /* CONFIG_COMPAT_32BIT_TIME */
|
||||
|
||||
int __c_kernel_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts,
|
||||
const struct vdso_time_data *vd)
|
||||
{
|
||||
return __cvdso_clock_gettime_data(vd, clock, ts);
|
||||
}
|
||||
|
||||
int __c_kernel_clock_getres_time64(clockid_t clock_id, struct __kernel_timespec *res,
|
||||
const struct vdso_time_data *vd)
|
||||
@@ -43,6 +45,7 @@ int __c_kernel_clock_getres_time64(clockid_t clock_id, struct __kernel_timespec
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(__powerpc64__) || defined(CONFIG_COMPAT_32BIT_TIME)
|
||||
int __c_kernel_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz,
|
||||
const struct vdso_time_data *vd)
|
||||
{
|
||||
@@ -53,3 +56,4 @@ __kernel_old_time_t __c_kernel_time(__kernel_old_time_t *time, const struct vdso
|
||||
{
|
||||
return __cvdso_time_data(vd, time);
|
||||
}
|
||||
#endif
|
||||
|
||||
+4
-4
@@ -54,7 +54,7 @@ config RISCV
|
||||
select ARCH_HAS_SYSCALL_WRAPPER
|
||||
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
|
||||
select ARCH_HAS_UBSAN
|
||||
select ARCH_HAS_VDSO_ARCH_DATA if HAVE_GENERIC_VDSO
|
||||
select ARCH_HAS_VDSO_ARCH_DATA
|
||||
select ARCH_HAVE_NMI_SAFE_CMPXCHG
|
||||
select ARCH_KEEP_MEMBLOCK if ACPI || KEXEC
|
||||
select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE if 64BIT && MMU
|
||||
@@ -110,7 +110,7 @@ config RISCV
|
||||
select GENERIC_CPU_VULNERABILITIES
|
||||
select GENERIC_EARLY_IOREMAP
|
||||
select GENERIC_ENTRY
|
||||
select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO && 64BIT
|
||||
select GENERIC_GETTIMEOFDAY if MMU && 64BIT
|
||||
select GENERIC_IDLE_POLL_SETUP
|
||||
select GENERIC_IOREMAP if MMU
|
||||
select HAVE_IOREMAP_PROT if MMU
|
||||
@@ -171,7 +171,6 @@ config RISCV
|
||||
select HAVE_FUNCTION_ARG_ACCESS_API
|
||||
select HAVE_FUNCTION_ERROR_INJECTION
|
||||
select HAVE_GCC_PLUGINS
|
||||
select HAVE_GENERIC_VDSO if MMU
|
||||
select HAVE_IRQ_TIME_ACCOUNTING
|
||||
select HAVE_KERNEL_BZIP2 if !EFI_ZBOOT
|
||||
select HAVE_KERNEL_GZIP if !EFI_ZBOOT
|
||||
@@ -227,7 +226,8 @@ config RISCV
|
||||
select THREAD_INFO_IN_TASK
|
||||
select TRACE_IRQFLAGS_SUPPORT
|
||||
select UACCESS_MEMCPY if !MMU
|
||||
select VDSO_GETRANDOM if HAVE_GENERIC_VDSO && 64BIT
|
||||
select VDSO_DATASTORE if MMU
|
||||
select VDSO_GETRANDOM if MMU && 64BIT
|
||||
select USER_STACKTRACE_SUPPORT
|
||||
select ZONE_DMA32 if 64BIT
|
||||
|
||||
|
||||
@@ -215,7 +215,6 @@ config S390
|
||||
select HAVE_FUNCTION_GRAPH_TRACER
|
||||
select HAVE_FUNCTION_TRACER
|
||||
select HAVE_GCC_PLUGINS
|
||||
select HAVE_GENERIC_VDSO
|
||||
select HAVE_IOREMAP_PROT if PCI
|
||||
select HAVE_KERNEL_BZIP2
|
||||
select HAVE_KERNEL_GZIP
|
||||
|
||||
@@ -113,7 +113,6 @@ config SPARC64
|
||||
select ARCH_SUPPORTS_SCHED_SMT if SMP
|
||||
select ARCH_SUPPORTS_SCHED_MC if SMP
|
||||
select ARCH_HAS_LAZY_MMU_MODE
|
||||
select HAVE_GENERIC_VDSO
|
||||
select GENERIC_GETTIMEOFDAY
|
||||
|
||||
config ARCH_PROC_KCORE_TEXT
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include "../../../../lib/vdso/gettimeofday.c"
|
||||
|
||||
#if defined(CONFIG_SPARC64) || defined(CONFIG_COMPAT_32BIT_TIME)
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
|
||||
{
|
||||
return __cvdso_gettimeofday(tv, tz);
|
||||
@@ -28,6 +29,7 @@ int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
|
||||
|
||||
int gettimeofday(struct __kernel_old_timeval *, struct timezone *)
|
||||
__weak __alias(__vdso_gettimeofday);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SPARC64)
|
||||
int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts)
|
||||
@@ -40,6 +42,7 @@ int clock_gettime(clockid_t, struct __kernel_timespec *)
|
||||
|
||||
#else
|
||||
|
||||
#if defined(CONFIG_COMPAT_32BIT_TIME)
|
||||
int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts)
|
||||
{
|
||||
return __cvdso_clock_gettime32(clock, ts);
|
||||
@@ -47,6 +50,7 @@ int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts)
|
||||
|
||||
int clock_gettime(clockid_t, struct old_timespec32 *)
|
||||
__weak __alias(__vdso_clock_gettime);
|
||||
#endif
|
||||
|
||||
int __vdso_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts)
|
||||
{
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user