[PATCH v7 7/9] ARM: add vdso user-space code
Russell King - ARM Linux
linux at arm.linux.org.uk
Sat Jun 28 08:26:09 PDT 2014
On Sun, Jun 22, 2014 at 10:11:56PM -0500, Nathan Lynch wrote:
> Place vdso-related user-space code in arch/arm/kernel/vdso/.
>
> It is almost completely written in C with some assembly helpers to
> load the data page address, sample the counter, and fall back to
> system calls when necessary.
>
> If CONFIG_ARM_ARCH_TIMER is not enabled, the vdso cannot service
> high-resolution clocks and falls back to syscalls. Low-resolution
> clocks e.g. CLOCK_REALTIME_COARSE can be serviced regardless.
Okay, how is this used by userspace?
It seems that on ARM, we generate a dso with these symbols:
DYNAMIC SYMBOL TABLE:
000001e4 l d .eh_frame_hdr 00000000 .eh_frame_hdr
00000000 g DO *ABS* 00000000 LINUX_3.17 LINUX_3.17
000003c4 g DF .text 00000080 LINUX_3.17 __kernel_clock_getres
00000444 g DF .text 0000002c LINUX_3.17 __kernel_gettimeofday
00000298 g DF .text 0000012c LINUX_3.17 __kernel_clock_gettime
whereas, x86-64 generates this:
DYNAMIC SYMBOL TABLE:
ffffffffff700330 l d .eh_frame_hdr 0000000000000000 .eh_frame_hdr
ffffffffff700600 w DF .text 00000000000002b9 LINUX_2.6 clock_gettime
0000000000000000 g DO *ABS* 0000000000000000 LINUX_2.6 LINUX_2.6
ffffffffff7008c0 g DF .text 000000000000015a LINUX_2.6 __vdso_gettimeofday
ffffffffff700a40 g DF .text 000000000000003d LINUX_2.6 __vdso_getcpu
ffffffffff7008c0 w DF .text 000000000000015a LINUX_2.6 gettimeofday
ffffffffff700a20 w DF .text 0000000000000016 LINUX_2.6 time
ffffffffff700a40 w DF .text 000000000000003d LINUX_2.6 getcpu
ffffffffff700600 g DF .text 00000000000002b9 LINUX_2.6 __vdso_clock_gettime
ffffffffff700a20 g DF .text 0000000000000016 LINUX_2.6 __vdso_time
hence references to gettimeofday automatically get resolved to the
vdso version without needing C library updates.
Or... do we need a glibc update to make use of this?
--
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.
More information about the linux-arm-kernel
mailing list