1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

ARM: VDSO support

Beginning with the upcoming 4.1 release, Linux on a subset of 32-bit
ARM hardware will provide fast user-space implementations of the
following system calls:

- gettimeofday
- clock_gettime

The kernel implementation depends on the ARMv7 Generic Timers
Extension to accelerate these system calls.  So CPUs such as
Cortex-A15 and -A7 benefit, while Cortex-A9, -A8, and pre-v7 CPUs do
not.  On systems where the VDSO does not provide any speedup, the
kernel prevents the relevant symbol lookups from succeeding.

On OMAP5 (Cortex-A15) gettimeofday latency decreases from ~350ns to
~120ns.  On BeagleBone Black (Cortex-A8) it goes from ~650ns to
~660ns, which to my mind is an acceptable cost.

Verified that no new test failures are introduced on kernels with and
without the VDSO.

	* sysdeps/unix/sysv/linux/arm/Makefile: (sysdep_routines):
	Include dl-vdso.
	* sysdeps/unix/sysv/linux/arm/init-first.c: New file:
	Use VDSO routines for gettimeofday, clock_gettime if
	available.
	* sysdeps/unix/sysv/linux/arm/libc-vdso.h: New file:
	Declare VDSO symbols.
	* sysdeps/unix/sysv/linux/arm/sysdep.h:
	[HAVE_GETTIMEOFDAY_VSYSCALL]: Define.
	[HAVE_CLOCK_GETTIME_VSYSCALL]: Define.
	* sysdeps/unix/sysv/linux/arm/Versions: Add
	__vdso_clock_gettime.
This commit is contained in:
Nathan Lynch
2015-06-04 21:10:43 +00:00
committed by Joseph Myers
parent 34caaafd1a
commit b65d3e5f0f
6 changed files with 99 additions and 0 deletions

View File

@ -387,6 +387,10 @@ __local_syscall_error: \
#undef INTERNAL_SYSCALL_ERRNO
#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
/* List of system calls which are supported as vsyscalls. */
#define HAVE_CLOCK_GETTIME_VSYSCALL 1
#define HAVE_GETTIMEOFDAY_VSYSCALL 1
#define LOAD_ARGS_0()
#define ASM_ARGS_0
#define LOAD_ARGS_1(a1) \