glibc/sysdeps/unix/sysv/linux
Nathan Lynch b65d3e5f0f 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.
2015-06-04 21:10:43 +00:00
..
aarch64 Consolidate gettimeofday across aarch64/s390/tile 2015-05-26 17:03:35 -03:00
alpha Fix semaphore destruction (bug 12674). 2015-01-21 00:46:16 -05:00
arm ARM: VDSO support 2015-06-04 21:10:43 +00:00
bits in.h: Coordinate in6_pktinfo and ip6_mtuinfo for kernel and glibc [BZ #15850] 2015-02-25 00:13:28 -05:00
generic struct stat is not posix conform 2015-05-26 22:27:24 +05:30
hppa Remove socket.S implementation 2015-05-22 17:38:06 -03:00
i386 x86: clock_gettime and timespec_get vDSO cleanup 2015-06-01 22:25:02 -03:00
ia64 struct stat is not posix conform 2015-05-26 22:27:24 +05:30
include/sys
m68k Remove socket.S implementation 2015-05-22 17:38:06 -03:00
microblaze struct stat is not posix conform 2015-05-26 22:27:24 +05:30
mips Use better variable names in MIPS syscall macros. 2015-06-02 20:38:49 +00:00
net
netash
netatalk
netax25
neteconet
netinet
netipx
netiucv
netpacket
netrom
netrose
nfs
nios2 Bug 18125: Call exit after last linked context. 2015-05-08 11:29:38 -04:00
powerpc Use inline syscalls for non-cancellable versions 2015-06-04 14:52:34 -03:00
s390 Consolidate gettimeofday across aarch64/s390/tile 2015-05-26 17:03:35 -03:00
scsi
sh Remove socket.S implementation 2015-05-22 17:38:06 -03:00
sparc Remove socket.S implementation 2015-05-22 17:38:06 -03:00
sys
tile tile: use better variable naming in INLINE_SYSCALL 2015-05-26 20:29:56 -04:00
wordsize-64 __ASSUME_FALLOCATE is always true on 32-bit architectures 2015-05-05 08:28:35 +02:00
x86 x86: clock_gettime and timespec_get vDSO cleanup 2015-06-01 22:25:02 -03:00
x86_64 x86: clock_gettime and timespec_get vDSO cleanup 2015-06-01 22:25:02 -03:00
_exit.c
_G_config.h
a.out.h
accept4.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
accept.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
adjtime.c
aio_misc.h
aio_sigqueue.c
arch-fork.h
bind.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
check_native.c
check_pf.c Clean up check_pf allocation pattern. addresses 2015-01-06 17:26:44 +01:00
check-cpuset.h NPTL: Refactor cpu_set_t validation to be sysdeps-controlled 2015-01-08 10:49:40 -08:00
clock_getcpuclockid.c
clock_getres.c Consolidate vDSO macros and usage 2015-05-26 10:10:36 -03:00
clock_gettime.c Consolidate vDSO macros and usage 2015-05-26 10:10:36 -03:00
clock_nanosleep.c
clock_settime.c
clock.c Define CLOCKS_PER_SEC type to the type clock_t 2015-01-06 04:59:13 -08:00
cmsg_nxthdr.c
configure
configure.ac
connect.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
createthread.c
default-sched.h
device-nrs.h
dl-brk.c
dl-execstack.c
dl-fxstatat64.c
dl-getcwd.c
dl-librecon.h
dl-openat64.c linux: open and openat ignore 'mode' with O_TMPFILE in flags 2015-02-24 13:19:22 +05:30
dl-opendir.c
dl-origin.c
dl-osinfo.h
dl-sbrk.c
dl-sysdep.c
dl-sysdep.h
dl-vdso.c
dl-vdso.h
dl-writev.h
epoll_pwait.c
errqueue.h
eventfd_read.c
eventfd_write.c
eventfd.c
exit-thread.h
faccessat.c
fallocate64.c
fallocate.c
fatal-prepare.h
fchmodat.c
fcntl.c
fd_to_filename.h
fexecve.c
fips-private.h
fpathconf.c
fstatfs64.c
fstatvfs64.c
fstatvfs.c
ftime.c
ftruncate64.c
futimens.c powerpc: Fix compiler warning on some syscalls 2015-01-08 08:03:31 -05:00
futimes.c
futimesat.c powerpc: Fix compiler warning on some syscalls 2015-01-08 08:03:31 -05:00
fxstat64.c
fxstat.c
fxstatat64.c
fxstatat.c
gai_sigqueue.c
getclktck.c
getcwd.c
getdents64.c
getdents.c
getdirentries64.c
getdirentries.c
getdtsz.c
gethostid.c
getipv4sourcefilter.c
getloadavg.c
getlogin_r.c
getlogin.c
getpagesize.c
getpeername.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
getpid.c
getpriority.c
getpt.c
getrlimit64.c Fix posix_spawn getrlimit64 namespace (bug 17991). 2015-02-18 00:26:35 +00:00
getsockname.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
getsockopt.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
getsourcefilter.c
getsysstats.c
gettimeofday.c Consolidate gettimeofday across aarch64/s390/tile 2015-05-26 17:03:35 -03:00
grantpt.c
if_index.c
ifaddrs.c
ifreq.c
Implies
internal_statvfs64.c
internal_statvfs.c
ipc_priv.h
kernel_sigaction.h
kernel_stat.h
kernel_termios.h
kernel-features.h Remove socket.S implementation 2015-05-22 17:38:06 -03:00
kernel-posix-cpu-timers.h
kernel-posix-timers.h
ldd-rewrite.sed
lddlibc4.c Update copyright dates not handled by scripts/update-copyrights. 2015-01-02 16:54:45 +00:00
ldsodefs.h
libc_fatal.c
linux_fsinfo.h
listen.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
llseek.c
local-setxid.h
lowlevellock-futex.h
lseek64.c
lutimes.c
lxstat64.c
lxstat.c
makedev.c
Makefile Remove socket.S implementation 2015-05-22 17:38:06 -03:00
malloc-sysdep.h
mmap64.c
mq_close.c
mq_getattr.c
mq_notify.c
mq_open.c
mq_receive.c
mq_send.c
mq_unlink.c
msgctl.c
msgget.c
msgrcv.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
msgsnd.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
netlinkaccess.h
nice.c
not-cancel.h Use inline syscalls for non-cancellable versions 2015-06-04 14:52:34 -03:00
nptl-signals.h
nscd_setup_thread.c
ntp_gettime.c
ntp_gettimex.c
open64.c linux: open and openat ignore 'mode' with O_TMPFILE in flags 2015-02-24 13:19:22 +05:30
openat64.c
openat.c linux: open and openat ignore 'mode' with O_TMPFILE in flags 2015-02-24 13:19:22 +05:30
opendir.c
opensock.c
pathconf.c Fix pathconf basename namespace (bug 18444). 2015-05-22 17:09:36 +00:00
pathconf.h
paths.h
posix_fadvise64.c
posix_fadvise.c
posix_fallocate64.c __ASSUME_FALLOCATE is always true on 32-bit architectures 2015-05-05 08:28:35 +02:00
posix_fallocate.c __ASSUME_FALLOCATE is always true on 32-bit architectures 2015-05-05 08:28:35 +02:00
posix_madvise.c
ppoll.c
pread64.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
pread.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
preadv64.c
preadv.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
prlimit.c
prof-freq.c
profil.c
pselect.c
pt-raise.c
pthread_getaffinity.c
pthread_getcpuclockid.c
pthread_getname.c
pthread_kill.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
pthread_setaffinity.c pthread_setaffinity (Linux variant): Rewrite to use VLA instead of alloca 2015-03-23 16:34:48 +01:00
pthread_setname.c
pthread_sigmask.c
pthread_sigqueue.c
pthread-pids.h NaCl: Set tid field to a unique value. 2015-05-20 14:52:05 -07:00
ptrace.c
ptsname.c
pwrite64.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
pwrite.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
pwritev64.c
pwritev.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
raise.c
readahead.c
readdir64_r.c
readdir64.c
readonly-area.c
reboot.c
recv.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
recvfrom.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
recvmmsg.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
recvmsg.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
remove.c
sa_len.c
safe-fatal.h
sched_getaffinity.c
sched_getcpu.c
sched_setaffinity.c
segfault.c
semctl.c
semget.c
semop.c
semtimedop.c
send.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
sendmmsg.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
sendmsg.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
sendto.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
setegid.c
seteuid.c
setgid.c
setgroups.c
sethostid.c
setipv4sourcefilter.c
setregid.c
setresgid.c
setresuid.c
setreuid.c
setrlimit64.c
setsockopt.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
setsourcefilter.c
setuid.c
shlib-versions
shm-directory.c
shmat.c
shmctl.c
shmdt.c
shmget.c
shutdown.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
sigaction.c
siglist.h
signal.c
signalfd.c
sigpending.c
sigprocmask.c
sigqueue.c
sigreturn.c
sigset-cvt-mask.h
sigstack.c
sigsuspend.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
sigtimedwait.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
sigwait.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
sigwaitinfo.c Function declaration cleanup 2015-01-06 08:23:58 -08:00
sizes.h
sleep.c
socket.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
socketcall.h Remove socket.S implementation 2015-05-22 17:38:06 -03:00
socketpair.c Remove socket.S implementation 2015-05-22 17:38:06 -03:00
speed.c
statfs64.c
statvfs64.c
statvfs.c
sync_file_range.c
syscalls.list
sysconf.c
sysctl.c
sysctl.mk
sysdep-vdso.h Consolidate vDSO macros and usage 2015-05-26 10:10:36 -03:00
syslog.c
system.c
tcdrain.c
tcflow.c
tcflush.c
tcgetattr.c
tcgetpgrp.c
tcsendbrk.c
tcsetattr.c
tcsetpgrp.c
termio.h
time.c
timer_create.c
timer_delete.c
timer_getoverr.c
timer_gettime.c
timer_routines.c
timer_settime.c
times.c
timespec_get.c x86: clock_gettime and timespec_get vDSO cleanup 2015-06-01 22:25:02 -03:00
truncate64.c
tst-align-clone.c NPTL: Build tests using clone directly only for Linux. 2015-02-06 12:30:23 -08:00
tst-clone.c
tst-fanotify.c
tst-getcpu.c
tst-getpid1.c NPTL: Build tests using clone directly only for Linux. 2015-02-06 12:30:23 -08:00
tst-getpid2.c NPTL: Build tests using clone directly only for Linux. 2015-02-06 12:30:23 -08:00
tst-setgetname.c
ttyname_r.c
ttyname.c
ualarm.c
umount2.S
umount.S
unlockpt.c
updwtmp.c
ustat.c
utimensat.c powerpc: Fix compiler warning on some syscalls 2015-01-08 08:03:31 -05:00
utimes.c powerpc: Fix compiler warning on some syscalls 2015-01-08 08:03:31 -05:00
utmp_file.c
Versions
vfork.c
wait3.c
wait.c
waitid.c
waitpid.c
xmknod.c
xmknodat.c
xstat64.c
xstat.c
xstatconv.c
xstatconv.h