vDSO(7) Miscellaneous Information Manual vDSO(7) vdso - ELF #include void *vdso = (uintptr_t) getauxval(AT_SYSINFO_EHDR); "vDSO" ( ) . vDSO C. C vDSO. vDSO . . / C . vDSO C . . x86 32 (int $0x80) . : . ( ) . C C vDSO. . x86 vDSO "__kernel_vsyscall" x86-64 "vsyscall" . gettimeofday(2). C. -- . -- ( ) . . gettimeofday(2) . vDSO vDSO ( ) ( getauxval(3)) AT_SYSINFO_EHDR. vDSO . ( execve(2)). " libc". AT_SYSINFO. vsyscall 0 ( ). vDSO ( ) . vDSO ELF . C . C . ( GNU). . . vDSO ABI . vDSO "__vdso_" "__kernel_" . "gettimeofday" "__vdso_gettimeofday". C . . vDSO . : find arch/$ARCH/ -name '*vdso*.so*' -o -name '*gate*.so*' vDSO vDSO . ldd(1) glibc. . ABI vDSO ------------------------------------------------- aarch64 linux-vdso.so.1 arm linux-vdso.so.1 ia64 linux-gate.so.1 mips linux-vdso.so.1 ppc/32 linux-vdso32.so.1 ppc/64 linux-vdso64.so.1 riscv linux-vdso.so.1 s390 linux-vdso32.so.1 s390x linux-vdso64.so.1 sh linux-gate.so.1 i386 linux-gate.so.1 x86-64 linux-vdso.so.1 x86/x32 linux-vdso.so.1 strace(1) seccomp(2) vDSO strace(1) ( ) vDSO . seccomp(2). vDSO. vDSO ABI ABI . ELF 32 i386 vDSO i386 32 x86-64 64 . ABI . ARM vDSO. version ----------------------------------------------------------------------- __vdso_gettimeofday LINUX_2.6 ( Linux 4.1) __vdso_clock_gettime LINUX_2.6 ( Linux 4.1) ARM . ELF . . : Documentation/arm/kernel_user_helpers.rst. aarch64 vDSO. version -------------------------------------- __kernel_rt_sigreturn LINUX_2.6.39 __kernel_gettimeofday LINUX_2.6.39 __kernel_clock_gettime LINUX_2.6.39 __kernel_clock_getres LINUX_2.6.39 bfin (Blackfin) ( Linux 4.17) (MMU) vDSO . . . -- ELF ( bFLT/FLAT). : http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:fixed-code mips vDSO. version ------------------------------------------------------------------------- __kernel_gettimeofday LINUX_2.6 ( Linux 4.4) __kernel_clock_gettime LINUX_2.6 ( Linux 4.4) ia64 (Itanium) vDSO. version --------------------------------------- __kernel_sigtramp LINUX_2.5 __kernel_syscall_via_break LINUX_2.5 __kernel_syscall_via_epc LINUX_2.5 Itanium . vDSO " " ( " " "fsys"). vDSO __kernel_syscall_via_epc. syscall(2) . . function ---------------- clock_gettime getcpu getpid getppid gettimeofday set_tid_address parisc (hppa) parisc . ELF SR2. . HP-UX. ELF . : ble (%sr2, %r0) function ----------------------------------------------------------------------------------- 00b0 lws_entry ( CAS) 00e0 set_thread_pointer ( glibc) 0100 linux_gateway_entry (syscall) ppc/32 vDSO. * PowerPC64 (64-). version ---------------------------------------- __kernel_clock_getres LINUX_2.6.15 __kernel_clock_gettime LINUX_2.6.15 __kernel_clock_gettime64 LINUX_5.11 __kernel_datapage_offset LINUX_2.6.15 __kernel_get_syscall_map LINUX_2.6.15 __kernel_get_tbfreq LINUX_2.6.15 __kernel_getcpu * LINUX_2.6.15 __kernel_gettimeofday LINUX_2.6.15 __kernel_sigtramp_rt32 LINUX_2.6.15 __kernel_sigtramp32 LINUX_2.6.15 __kernel_sync_dicache LINUX_2.6.15 __kernel_sync_dicache_p5 LINUX_2.6.15 5.6 CLOCK_REALTIME_COARSE CLOCK_MONOTONIC_COARSE __kernel_clock_getres __kernel_clock_gettime . ppc/64 vDSO. version ---------------------------------------- __kernel_clock_getres LINUX_2.6.15 __kernel_clock_gettime LINUX_2.6.15 __kernel_datapage_offset LINUX_2.6.15 __kernel_get_syscall_map LINUX_2.6.15 __kernel_get_tbfreq LINUX_2.6.15 __kernel_getcpu LINUX_2.6.15 __kernel_gettimeofday LINUX_2.6.15 __kernel_sigtramp_rt64 LINUX_2.6.15 __kernel_sync_dicache LINUX_2.6.15 __kernel_sync_dicache_p5 LINUX_2.6.15 4.16 CLOCK_REALTIME_COARSE CLOCK_MONOTONIC_COARSE __kernel_clock_getres __kernel_clock_gettime . riscv vDSO. version ---------------------------------- __vdso_rt_sigreturn LINUX_4.15 __vdso_gettimeofday LINUX_4.15 __vdso_clock_gettime LINUX_4.15 __vdso_clock_getres LINUX_4.15 __vdso_getcpu LINUX_4.15 __vdso_flush_icache LINUX_4.15 s390 vDSO. version -------------------------------------- __kernel_clock_getres LINUX_2.6.29 __kernel_clock_gettime LINUX_2.6.29 __kernel_gettimeofday LINUX_2.6.29 s390x vDSO. version -------------------------------------- __kernel_clock_getres LINUX_2.6.29 __kernel_clock_gettime LINUX_2.6.29 __kernel_gettimeofday LINUX_2.6.29 sh (SuperH) vDSO. version ---------------------------------- __kernel_rt_sigreturn LINUX_2.6 __kernel_sigreturn LINUX_2.6 __kernel_vsyscall LINUX_2.6 i386 vDSO. version ----------------------------------------------------------------------------------- __kernel_sigreturn LINUX_2.5 __kernel_rt_sigreturn LINUX_2.5 __kernel_vsyscall LINUX_2.5 __vdso_clock_gettime LINUX_2.6 ( 3.15) __vdso_gettimeofday LINUX_2.6 ( 3.15) __vdso_time LINUX_2.6 ( 3.15) x86-64 vDSO. "__vdso_" . version --------------------------------- __vdso_clock_gettime LINUX_2.6 __vdso_getcpu LINUX_2.6 __vdso_gettimeofday LINUX_2.6 __vdso_time LINUX_2.6 x86/x32 vDSO. version --------------------------------- __vdso_clock_gettime LINUX_2.6 __vdso_getcpu LINUX_2.6 __vdso_gettimeofday LINUX_2.6 __vdso_time LINUX_2.6 vDSO --vsyscall. "vdso". vDSO . syscalls(2) getauxval(3) proc(5) : Documentation/ABI/stable/vdso Documentation/ia64/fsys.rst Documentation/vDSO/* ( vDSO) find arch/ -iname '*vdso*' -o -iname '*gate*' 3 . . : . 6.18 25 2025 vDSO(7)