vdso.7: Further tweaks after discussion with Mike Frysinger

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Michael Kerrisk 2014-01-02 08:41:50 +13:00
parent fb634bd8da
commit f6816de988
1 changed files with 27 additions and 10 deletions

View File

@ -22,7 +22,7 @@ The "vDSO" is a small shared library that the kernel automatically maps into the
address space of all user-space applications.
Applications usually do not need to concern themselves with these details
as the vDSO is most commonly called by the C library.
This way you can write using standard functions
This way you can code in the normal way using standard functions
and the C library will take care
of using any functionality that is available via the vDSO.
@ -132,12 +132,6 @@ You will frequently find it under the architecture-specific directory:
find arch/$ARCH/ -name '*vdso*.so*' -o -name '*gate*.so*'
Note that the vDSO that is used is based on the ABI of your user-space code
and not the ABI of the kernel.
In other words,
if you run an i386 32-bit ELF under an i386 32-bit kernel or under an
x86_64 64-bit kernel, you'll get the same vDSO.
So when referring to sections below, use the user-space ABI.
.SS vDSO names
The name of vDSO shared object varies across architectures.
It will often show up in things like glibc's
@ -166,6 +160,18 @@ x86/x32 linux-vdso.so.1
.in
.ft P
\}
.SH ARCHITECTURE_SPECIFIC NOTES
The subsections below provide architecture-specific notes
on the vDSO.
Note that the vDSO that is used is based on the ABI of your user-space code
and not the ABI of the kernel.
Thus, for example,
when you run an i386 32-bit ELF binary,
you'll get the same vDSO regardless of whether you run it under
an i386 32-bit kernel or under an x86_64 64-bit kernel.
Thus, the name of the user-space ABI should be used to determine
which of the sections below is relevant.
.SS ARM functions
.\" See linux/arch/arm/kernel/entry-armv.S
.\" See linux/Documentation/arm/kernel_user_helpers.txt
@ -180,6 +186,7 @@ as it's extremely detailed and covers everything you need to know:
.IR Documentation/arm/kernel_user_helpers.txt .
.SS aarch64 functions
.\" See linux/arch/arm64/kernel/vdso/vdso.lds.S
The table below lists the symbols exported by the vDSO.
.if t \{\
.ft CW
\}
@ -208,12 +215,14 @@ There is no provision for backward compatibility beyond sniffing raw opcodes,
but as this is an embedded CPU, it can get away with things\(emsome of the
object formats it runs aren't even ELF based (they're bFLT/FLAT).
For documentation on this code page, it's better you refer to the public docs:
For information on this code page,
it's best to refer to the public documentation:
.br
http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:fixed-code
.SS ia64 (Itanium) functions
.\" See linux/arch/ia64/kernel/gate.lds.S
.\" Also linux/arch/ia64/kernel/fsys.S and linux/Documentation/ia64/fsys.txt
The table below lists the symbols exported by the vDSO.
.if t \{\
.ft CW
\}
@ -306,10 +315,11 @@ _
\}
.SS ppc/32 functions
.\" See linux/arch/powerpc/kernel/vdso32/vdso32.lds.S
The table below lists the symbols exported by the vDSO.
The functions marked with a
.I *
below are available only when the kernel is
a powerpc64 (64-bit) kernel.
are available only when the kernel is
a PowerPC64 (64-bit) kernel.
.if t \{\
.ft CW
\}
@ -335,6 +345,7 @@ __kernel_sync_dicache_p5 LINUX_2.6.15
\}
.SS ppc/64 functions
.\" See linux/arch/powerpc/kernel/vdso64/vdso64.lds.S
The table below lists the symbols exported by the vDSO.
.if t \{\
.ft CW
\}
@ -359,6 +370,7 @@ __kernel_sync_dicache_p5 LINUX_2.6.15
\}
.SS s390 functions
.\" See linux/arch/s390/kernel/vdso32/vdso32.lds.S
The table below lists the symbols exported by the vDSO.
.if t \{\
.ft CW
\}
@ -376,6 +388,7 @@ __kernel_gettimeofday LINUX_2.6.29
\}
.SS s390x functions
.\" See linux/arch/s390/kernel/vdso64/vdso64.lds.S
The table below lists the symbols exported by the vDSO.
.if t \{\
.ft CW
\}
@ -393,6 +406,7 @@ __kernel_gettimeofday LINUX_2.6.29
\}
.SS sh (SuperH) functions
.\" See linux/arch/sh/kernel/vsyscall/vsyscall.lds.S
The table below lists the symbols exported by the vDSO.
.if t \{\
.ft CW
\}
@ -410,6 +424,7 @@ __kernel_vsyscall LINUX_2.6
\}
.SS i386 functions
.\" See linux/arch/x86/vdso/vdso32/vdso32.lds.S
The table below lists the symbols exported by the vDSO.
.if t \{\
.ft CW
\}
@ -427,6 +442,7 @@ __kernel_vsyscall LINUX_2.5
\}
.SS x86_64 functions
.\" See linux/arch/x86/vdso/vdso.lds.S
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.
.if t \{\
@ -447,6 +463,7 @@ __vdso_time LINUX_2.6
\}
.SS x86/x32 functions
.\" See linux/arch/x86/vdso/vdso32.lds.S
The table below lists the symbols exported by the vDSO.
.if t \{\
.ft CW
\}