Path: blob/master/arch/x86/entry/vdso/common/vclock_gettime.c
121848 views
// SPDX-License-Identifier: GPL-2.0-only1/*2* Fast user context implementation of clock_gettime, gettimeofday, and time.3*4* Copyright 2006 Andi Kleen, SUSE Labs.5* Copyright 2019 ARM Limited6*7* 32 Bit compat layer by Stefani Seibold <[email protected]>8* sponsored by Rohde & Schwarz GmbH & Co. KG Munich/Germany9*/10#include <linux/time.h>11#include <linux/kernel.h>12#include <linux/types.h>13#include <vdso/gettime.h>1415#include "lib/vdso/gettimeofday.c"1617int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)18{19return __cvdso_gettimeofday(tv, tz);20}2122int gettimeofday(struct __kernel_old_timeval *, struct timezone *)23__attribute__((weak, alias("__vdso_gettimeofday")));2425__kernel_old_time_t __vdso_time(__kernel_old_time_t *t)26{27return __cvdso_time(t);28}2930__kernel_old_time_t time(__kernel_old_time_t *t) __attribute__((weak, alias("__vdso_time")));313233#if defined(CONFIG_X86_64) && !defined(BUILD_VDSO32_64)34/* both 64-bit and x32 use these */35int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts)36{37return __cvdso_clock_gettime(clock, ts);38}3940int clock_gettime(clockid_t, struct __kernel_timespec *)41__attribute__((weak, alias("__vdso_clock_gettime")));4243int __vdso_clock_getres(clockid_t clock,44struct __kernel_timespec *res)45{46return __cvdso_clock_getres(clock, res);47}48int clock_getres(clockid_t, struct __kernel_timespec *)49__attribute__((weak, alias("__vdso_clock_getres")));5051#else52/* i386 only */53int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts)54{55return __cvdso_clock_gettime32(clock, ts);56}5758int clock_gettime(clockid_t, struct old_timespec32 *)59__attribute__((weak, alias("__vdso_clock_gettime")));6061int __vdso_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts)62{63return __cvdso_clock_gettime(clock, ts);64}6566int clock_gettime64(clockid_t, struct __kernel_timespec *)67__attribute__((weak, alias("__vdso_clock_gettime64")));6869int __vdso_clock_getres(clockid_t clock, struct old_timespec32 *res)70{71return __cvdso_clock_getres_time32(clock, res);72}7374int clock_getres(clockid_t, struct old_timespec32 *)75__attribute__((weak, alias("__vdso_clock_getres")));7677int __vdso_clock_getres_time64(clockid_t clock, struct __kernel_timespec *ts)78{79return __cvdso_clock_getres(clock, ts);80}8182int clock_getres_time64(clockid_t, struct __kernel_timespec *)83__attribute__((weak, alias("__vdso_clock_getres_time64")));84#endif858687