There is a Virtual Dynamic Shared Object (VDSO) implemented in the glibc runtime library. The VDSO maps some of the kernel code, which is necessary to read gettimeofday in the user-space. Standard Red Hat Enterprise Linux 5.5 allows the gettimeofday function to be performed entirely in user-space, removing the system call overhead.
2.6. gettimeofday speedup
x86-64 functions
The table below lists the symbols exported by the vDSO. All of these symbols are also available without the "__vdso_" prefix, but you should ignore those and stick to the names below.symbol version
vdso(7) - Linux manual page
─────────────────────────────────
__vdso_clock_gettime LINUX_2.6
__vdso_getcpu LINUX_2.6
__vdso_gettimeofday LINUX_2.6
__vdso_time LINUX_2.6
Xen pvclock; does not support vDSO
x86: vdso: pvclock gettime support
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/arch/x86/vdso/vclock_gettime.c?id=51c19b4f5927f5a646e93d69f73c7e89ea14e737
Improve performance of time system calls when using Linux pvclock,
by reading time info from fixmap visible copy of pvclock data.